2010-05-17 57 views
0

我正在製作一個WPF應用程序,它將允許用戶繪製和調整形狀。 調整大小的部分完成使用裝飾者,形狀是我自己的類從Shape派生。 比如我有一個Polyline,併爲每一個它的點,我裝飾上有一個處理一個ThumbDragDelta事件: WPF中奇怪的形狀調整大小行爲

void Thumb_DragDelta(object sender, DragDeltaEventArgs e) 
    { 
     PolylineEx polyline = this.AdornedElement as PolylineEx; 
     ResizingThumb thumb = sender as ResizingThumb; 

     int index = (int)thumb.Tag; 

     Point newPoint = new Point(
      polyline.Points[index].X + e.HorizontalChange, 
      polyline.Points[index].Y + e.VerticalChange); 
     Trace.WriteLine(String.Format("Arranging point {0}:{1},{2}", index, newPoint.X, newPoint.Y)); 
     polyline.Points[index] = newPoint; 
    } 

好了,問題是,有時(經常),拖動拇指不流暢在所有。首先,我認爲這是一個性能問題,因爲每次都會創建一個新的Point(但其他的東西),但是後來我注意到有時候這個點被設置在與鼠標位置無關的奇怪座標處。

我也上傳了一個示例項目HERE,有人誰知道他的方式wpf看看,並啓發我發生了什麼?

此外,如果有人認爲這樣做的更好方法,任何反饋將高度讚賞。

謝謝。

編輯:HERE是項目文件的新鏈接。

+0

Ur鏈接不要混亂。嘗試上傳到SkyDrive或一些普遍接受和可靠的上傳主機。 – Will 2010-05-17 17:09:54

+0

感謝您的評論,這很奇怪,它不起作用。現在已上傳到SkyDrive。 – Teodor 2010-05-17 17:39:58

回答

0

我結束了回答我的問題:)

我認爲這個問題在這裏:

protected override System.Windows.Media.Geometry DefiningGeometry 
{ 
    get 
    { 
     StreamGeometry geometry = new StreamGeometry(); 
     using (StreamGeometryContext context = geometry.Open()) 
     { 
      context.BeginFigure(Points[0], false, true); 
      foreach (Point pt in Points) 
      { 
       context.LineTo(pt, true, true); 
      } 
      geometry.Freeze(); 
      return geometry; 
     } 
    } 
} 

我切換到使用的PathGeometry & LineSegments,現在工作得很好。

相關問題