如何使用鼠标滚轮启用MicrosoftChart控件缩放我在我的项目中使用了MicrosoftChart控件,我想使用鼠标滚轮在图表控件中启用缩放功能,我该如何实现?但是用户不必单击图表,它应该就像鼠标位置在我的图表上而不是从鼠标滚轮滚动它可以放大/缩小您将使用MouseWheel事件。首先使图表的两个轴都可缩放:chart1.ChartAreas[0].AxisX.ScaleView.Zoomable=true;chart1.ChartAreas[0].AxisY.ScaleView.Zoomable=true;并分配事件:chart1.MouseWheel+=chart1_MouseWheel;然后在事件处理程序中:privatevoidchart1_MouseWheel(objectsender,MouseEventArgse){varchart=(Chart)sender;varxAxis=chart.ChartAreas[0].AxisX;varyAxis=chart.ChartAreas[0]。Y轴;try{if(e.Delta0)//向上滚动。{varxMin=xAxis.ScaleView.ViewMinimum;varxMax=xAxis.ScaleView.ViewMaximum;varyMin=yAxis.ScaleView.ViewMinimum;.ViewMaximum;varposXStart=xAxis.PixelPositionToValue(e.Location.X)-(xMax-xMin)/4;varposXFinish=xAxis.PixelPositionToValue(e.Location.X)+(xMax-xMin)/4;varposYStart=yAxis.PixelPositionToValue(e.Location.Y)-(yMax-yMin)/4;varposYFinish=yAxis.PixelPositionToValue(e.Location.Y)+(yMax-yMin)/4;xAxis.ScaleView.Zoom(posXStart,posXFinish);yAxis.ScaleView.Zoom(posYStart,posYFinisH);}}catch{}}e.Delta属性告诉您已经完成了多少轮“滚动”,向外滚动可能有助于缩小。这可能是一种更简洁的方式,但事实就是如此。希望这可以帮助!我修改了上面的代码并添加了反向缩放。因此,当您旋转鼠标滚轮时,图表会缩小。另外我不建议使用2^n作为间隔的分隔符,因为它会导致滞后。以上就是C#学习教程:如何使用鼠标滚轮实现微软图表控件缩放分享所有内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注—numberOfZoom-缩放计数器varxAxis=chart.ChartAreas[0].AxisX;varyAxis=chart.ChartAreas[0].AxisY;varxMin=xAxis.ScaleView.ViewMinimum;varxMax=xAxis.ScaleView.ViewMaximum;varyMin=yAxis.ScaleView.ViewMinimum;varyMax=yAxis.ScaleView.ViewMaximum;int间隔X=3;int间隔=3;try{if(e.Delta0)//向下滚动。varposXStart=xAxis.PixelPositionToValue(e.Location.X)-IntervalX*2/Math.Pow(2,numberOfZoom);varposXFinish=xAxis.PixelPositionToValue(e.Location.X)+IntervalX*2/Math.Pow(2,numberOfZoom);varposYStart=yAxis.PixelPositionToValue(e.Location.Y)-IntervalY*2/Math.Pow(2,numberOfZoom);varposYFinish=yAxis.PixelPositionToValue(e.Location.Y)+IntervalY*2/Math.Pow(2,numberOfZoom);如果(posXStartyAxis.Maximum)posYFinish=yAxis.Maximum;如果(posXFinish>xAxis.Maximum)posYFinish=xAxis.Maximum;xAxis.ScaleView.Zoom(posXStart,posXFinish);yAxis.ScaleView.Zoom(posYStart,posYFinish);numberOfZoom--;}elseif(e.Delta0)//向上滚动。{varposXStart=xAxis.PixelPositionToValue(e.Location.X)-IntervalX/Math.Pow(2,numberOfZoom);varposXFinish=xAxis.PixelPositionToValue(e.Location.X)+IntervalX/Math.Pow(2,numberOfZoom);varposYStart=yAxis.PixelPositionToValue(e.Location.Y)-IntervalY/Math.Pow(2,numberOfZoom);varposYFinish=yAxis.PixelPositionToValue(e.Location.Y)+IntervalY/Math.Pow(2,numberOfZoom);xAxis.ScaleView.Zoom(posXStart,posXFinish);yAxis.ScaleView.Zoom(posYStart,posYFinish);数字缩放++;}if(numberOfZoom如有侵权,请点击右侧联系管理员删除。如需转载请注明出处:
