2012-11-27 16 views
15

का उपयोग कर माइक्रोसॉफ्ट चार्ट नियंत्रण में ज़ूमिंग को सक्षम करने के लिए कैसे करें मैं अपने प्रोजेक्ट में माइक्रोसॉफ्ट चार्ट नियंत्रण का उपयोग कर रहा हूं और मैं माउस व्हील का उपयोग कर चार्ट कंट्रोल में ज़ूमिंग फीचर को सक्षम करना चाहता हूं, मैं इसे कैसे प्राप्त कर सकता हूं?माउस व्हील

लेकिन उपयोगकर्ता चार्ट पर क्लिक करें की जरूरत नहीं है, यह रोलिंग यह/बाहर

में ज़ूम कर सकते हैं आगे के लिए माउस व्हील द्वारा माउस स्थिति उस बिंदु से की तुलना में मेरी चार्ट पर है अगर की तरह होना चाहिए

उत्तर

20

आप करना चाहते हैं MouseWheel घटना का उपयोग करें। सुनिश्चित करें कि आप अपना चार्ट ज़ूम करने योग्य बनाते हैं। उदाहरण के लिए:

chart1.ChartAreas[0].AxisX.ScaleView.Zoomable = true; 

फिर माउसव्हील घटना का उपयोग:

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 संपत्ति आपको बताती है कि आपने कितने पहियों 'स्क्रॉल' किए हैं और उपयोगी हो सकते हैं। इस कोड का उपयोग करते हुए यदि आप बिल्कुल स्क्रॉल करते हैं तो यह चार्ट के मूल आकार पर वापस आ जाएगा।

आशा है कि इससे मदद मिलती है!

+0

यह मेरे लिए बहुत ही अच्छा काम करता है। धन्यवाद! – crocboy

+0

यह मेरे लिए काम नहीं करता है। चार्ट की मूसहेल घटना फायरिंग नहीं है। –

+2

जाहिर है, आपको इसके लिए पहले 'void friendChart_MouseLeave (ऑब्जेक्ट प्रेषक, EventArgs ई) { (दोस्तChart.Focused) दोस्तChart.Parent.Focus(); } शून्य दोस्तChart_MouseEnter (ऑब्जेक्ट प्रेषक, EventArgs ई) { अगर (! FriendChart.Focused) दोस्तChart.Focus(); } '[मूसहेल घटना फायरिंग नहीं] [http://stackoverflow.com/questions/13782763/mousewheel-event-not-firing) –

संबंधित मुद्दे