में कैनवास पर आग नहीं लगाता है मैंने अपना कस्टम चार्ट नियंत्रण किया है और मैं कर्सर के बाद एक साधारण क्रॉस बनाना चाहता हूं। चार्ट को कैनवास पर पॉलीलाइन के रूप में कार्यान्वित किया गया है और मैं कैनवास के OnMouseMove ईवेंट में दो निर्देशों को अपने निर्देशांक बदल रहा हूं।OnMouseMove WPF
आश्चर्य की बात थी पाया है कि घटना केवल प्रत्येक 10 सेकंड या तो घटना जब MainGUI धागा निष्क्रिय है कहा जाता हो (यूआई पूरी तरह से उत्तरदायी है और अगर मैं आवेदन को थामने के मुख्य थ्रेड अनुप्रयोग mainForm.ShowDialog())
पर है।
कैसे क्यों है हो रहा मैं OnMouseMove या PreviewOnMouseMove का उपयोग कर एक ही प्रदर्शन प्राप्त खोजने के लिए पर कोई विचार
संपादित करें: यह मैं कैसे पार पेंट (वैसे भी अगर मैं OnMouseMove केवल उस पर एक ब्रेकपाइंट डाल है समय-समय पर बंद हो जाता है)
एक्सएएमएल:
<Border BorderThickness="1" BorderBrush="White" Grid.Column="1" Grid.Row="0" Grid.RowSpan="2" Grid.ColumnSpan="2" >
<Canvas x:Name="DrawArea" PreviewMouseMove="DrawArea_PreviewMouseMove" />
</Border>
सीएस:
public Chart()
{
_line = new Polyline();
_line.Stroke = Brushes.Orange;
_crossX = new Line();
_crossY = new Line();
_crossX.Stroke = Brushes.Orange;
_crossY.Stroke = Brushes.Orange;
_crossX.StrokeThickness = 1;
_crossY.StrokeThickness = 1;
InitializeComponent();
this.DrawArea.Children.Add(_line);
this.DrawArea.Children.Add(_crossX);
this.DrawArea.Children.Add(_crossY);
}
private void DrawArea_MouseMove(object sender, MouseEventArgs e)
{
Point mousePosition = System.Windows.Input.Mouse.GetPosition(this.DrawArea);
_crossX.X1 = 0;
_crossX.X2 = this.DrawArea.ActualWidth;
_crossX.Y1 = _crossX.Y2 = mousePosition.Y;
_crossY.Y1 = 0;
_crossY.Y2 = this.DrawArea.ActualHeight;
_crossY.X1 = _crossY.X2 = mousePosition.X;
}
क्या आप "नकली" को अतिरिक्त ड्राइंग करने की कोशिश करने के बजाय कस्टम कर्सर को परिभाषित नहीं कर सकते? –
तो, आपके पास कोई प्रदर्शन समस्या नहीं है, लेकिन समस्या यह है कि ईवेंट को बस नहीं कहा जा रहा है - क्या मैं यह सही समझता हूं? –
| डैनियल: इसे कहा जाता है क्योंकि क्रॉस चित्रित किया जाता है लेकिन यह प्रत्येक 10 सेकंड या उससे भी कम समय में 1 बार अपडेट हो जाता है। –