我想弄清楚如何編寫代碼,以便鼠標移動和線條繪製之間的響應時間即時。每次我這樣做,總是有2之間的差距。我已經在Windows窗體中編寫了這個代碼,現在我正在使用WPF編寫代碼。即時響應鼠標移動的畫線?
問題最初在於代碼,並不是我的電腦。
Basicaly它的工作原理是這樣的。 點擊任意位置並創建point1。 移動鼠標並更新point2,並且從Point1到Point2繪製一條線,該線在鼠標移動時發生變化。
下面是我的極端簡單的代碼來做到這一點.. 這似乎是瞬間,但如果你將窗口最大化,使線長和快速移動鼠標,就可以更輕鬆地發現它..
而且,未來會有一個圖像層,肯定會導致它滯後更多..但現在我只想優化它。
當我從5年前使用其他類似的程序時,線條運動實際上是即時的。這就是爲什麼我很困惑,爲什麼用這個新編碼,其laggy ..
Point mLoc;
Line myLine = new Line();
public MainWindow()
{
InitializeComponent();
SnapsToDevicePixels = false;
myLine.Stroke = System.Windows.Media.Brushes.White;
myLine.StrokeThickness = 1;
canvas1.Children.Add(myLine);
}
private void onMMove(object sender, MouseEventArgs e)
{
mLoc = Mouse.GetPosition(canvas1);
myLine.X2 = mLoc.X;
myLine.Y2 = mLoc.Y;
}
private void onMLClick(object sender, MouseButtonEventArgs e)
{
mLoc = Mouse.GetPosition(canvas1);
myLine.X1 = mLoc.X;
myLine.Y1 = mLoc.Y;
}
向Canvas添加線控是瘋狂。嘗試使用圖形上下文來繪製到屏幕上。 – Asti 2012-03-16 14:36:17
剛剛在我的機器上試過您的確切代碼,根本無法觀察到任何延遲。 – 2012-03-16 14:38:59
humm,感謝您的評論..我會嘗試使用圖形上下文..滯後是非常小,但definitly那裏..最大化程序,並使線更長,並更快地移動鼠標 – 2012-03-16 14:40:17