我已經完成了自定義圖表控件,並且想要在光標後面畫一個簡單的十字。該圖表是通過Canvas上的PolyLine實現的,並且我在Canvas的OnMouseMove事件中繪製了兩行更改其座標的行。OnMouseMove不會在WPF中的畫布上觸發
令人驚訝的是,發現該事件被調用只有各10秒左右的事件時MainGUI線程空閒(用戶界面是完全響應,如果我暫停應用程序的主線程的應用程序mainForm.ShowDialog())
。
如何找到這究竟是爲什麼我得到使用的OnMouseMove或PreviewOnMouseMove相同性能的任何想法
編輯:這是我畫的十字架(反正如果我把一個斷點處的OnMouseMove只有它不時停止)
XAML:
<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>
CS:
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秒左右可能會更新一次。 –