2017-08-12 64 views
1

我的問題有三個部分: 我可以在WPF畫布上繪製線條,圓形,矩形和..等形狀。我想使用InkCanvas功能,如清除和移動筆畫。如何將矩形或圓形狀轉換爲WPF中的筆尖點集合?

  1. 是否可以將此形狀轉換爲手寫筆集合 分並將此集合添加到InkCanvas?
  2. 如果可能我該怎麼做?
  3. 有沒有更好的方法來處理這種情況?

請引導我。

回答

2

首先,答案是肯定的。您可以將路徑轉換爲筆畫集合,然後將其添加到InkCanvas。
對於你的問題的第二部分,答案應該是這樣的:

Point mypoint; 
Point tg; 
var pointCollection = new List<Point>(); 
    for (var i = 0; i < 500; i++) 
     { 
      SomePath.Data.GetFlattenedGeometryPath() 
         .GetPointAtFractionLength(i/500f, out mypoint, out tg); 
      pointCollection.Add(p); 
     } 

手寫筆點和手寫筆點集合:

StylusPointCollection StPoints = new StylusPointCollection(); 

轉換路徑的收集過程中添加手寫筆點分通過:

StPoints.Add(new StylusPoint(p.X, P.Y)); 

而這一步之後調用Stroke方法來創建一個s的集合從您的收藏筆trokes:

Stroke st = null; 
st = new Stroke(StPoints); 

更新
是的!有一個更好的方法來添加形狀inkCanvas。

  1. 可以直接定義該手寫筆點的形狀和使用的MouseDown,的MouseMove添加它們..例如用於繪製矩形:行程類

    pts.Add(new StylusPoint(mouseLeftDownPoint.X, mouseLeftDownPoint.Y)); 
    pts.Add(new StylusPoint(mouseLeftDownPoint.X, currentPoint.Y)); 
    pts.Add(new StylusPoint(currentPoint.X, currentPoint.Y)); 
    pts.Add(new StylusPoint(currentPoint.X, mouseLeftDownPoint.Y)); 
    pts.Add(new StylusPoint(mouseLeftDownPoint.X, mouseLeftDownPoint.Y)); 
    
  2. 或覆蓋DrawCore方法並定義一個新的筆畫類型。 Custom Rendering Ink(MSDN)

+1

謝謝:)我會嘗試新的方法。我認爲它是直接在Inkcanvas上繪製而不是轉換路徑的好主意。 –

+1

是的。像往常一樣保存一些內存和處理,並且在觸筆點旁邊不支持火盆點。 – hemarn

相關問題