15
我在我的項目中使用Microsoft圖表控件,我想通過使用鼠標滾輪在圖表控件中啓用縮放功能,我該如何實現這一點?如何通過使用鼠標滾輪啓用縮放Microsoft圖表控件
但用戶不必點擊圖表,它應該是這樣的,如果鼠標位置是我的圖不是從點開始通過鼠標滾輪滾動它可以放大/縮小
我在我的項目中使用Microsoft圖表控件,我想通過使用鼠標滾輪在圖表控件中啓用縮放功能,我該如何實現這一點?如何通過使用鼠標滾輪啓用縮放Microsoft圖表控件
但用戶不必點擊圖表,它應該是這樣的,如果鼠標位置是我的圖不是從點開始通過鼠標滾輪滾動它可以放大/縮小
你會想使用MouseWheel事件。確保你的圖表可縮放。例如:
chart1.ChartAreas[0].AxisX.ScaleView.Zoomable = true;
然後訪問MouseWheel事件:
private void chData_MouseWheel(object sender, MouseEventArgs e)
{
try
{
if (e.Delta < 0)
{
chart1.ChartAreas[0].AxisX.ScaleView.ZoomReset();
chart1.ChartAreas[0].AxisY.ScaleView.ZoomReset();
}
if (e.Delta > 0)
{
double xMin = chart1.ChartAreas[0].AxisX.ScaleView.ViewMinimum;
double xMax = chart1.ChartAreas[0].AxisX.ScaleView.ViewMaximum;
double yMin = chart1.ChartAreas[0].AxisY.ScaleView.ViewMinimum;
double yMax = chart1.ChartAreas[0].AxisY.ScaleView.ViewMaximum;
double posXStart = chart1.ChartAreas[0].AxisX.PixelPositionToValue(e.Location.X) - (xMax - xMin)/4;
double posXFinish = chart1.ChartAreas[0].AxisX.PixelPositionToValue(e.Location.X) + (xMax - xMin)/4;
double posYStart = chart1.ChartAreas[0].AxisY.PixelPositionToValue(e.Location.Y) - (yMax - yMin)/4;
double posYFinish = chart1.ChartAreas[0].AxisY.PixelPositionToValue(e.Location.Y) + (yMax - yMin)/4;
chart1.ChartAreas[0].AxisX.ScaleView.Zoom(posXStart, posXFinish);
chart1.ChartAreas[0].AxisY.ScaleView.Zoom(posYStart, posYFinish);
}
}
catch { }
}
有可能是這樣做的更清潔的方式,但它是。 e.Delta
屬性告訴你已經完成了多少個輪子的「滾動」,並且可能有用。如果您完全滾動出來,使用此代碼就可以恢復到圖表的原始大小。
希望這會有所幫助!
這對我來說真棒。謝謝! – crocboy
這不適合我。圖表的Mousewheel事件不會觸發。 –
顯然,你必須這樣做首先爲它工作'無效friendChart_MouseLeave(對象發件人,EventArgs的){ 如果 (friendChart.Focused) friendChart.Parent.Focus(); } void friendChart_MouseEnter(object sender,EventArgs e) if(!friendChart.Focused) friendChart.Focus(); }'[Mousewheel event not firing](http://stackoverflow.com/questions/13782763/mousewheel-event-not-firing) –