1
我的問題有三個部分: 我可以在WPF畫布上繪製線條,圓形,矩形和..等形狀。我想使用InkCanvas功能,如清除和移動筆畫。如何將矩形或圓形狀轉換爲WPF中的筆尖點集合?
- 是否可以將此形狀轉換爲手寫筆集合 分並將此集合添加到InkCanvas?
- 如果可能我該怎麼做?
- 有沒有更好的方法來處理這種情況?
請引導我。
我的問題有三個部分: 我可以在WPF畫布上繪製線條,圓形,矩形和..等形狀。我想使用InkCanvas功能,如清除和移動筆畫。如何將矩形或圓形狀轉換爲WPF中的筆尖點集合?
請引導我。
首先,答案是肯定的。您可以將路徑轉換爲筆畫集合,然後將其添加到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。
可以直接定義該手寫筆點的形狀和使用的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));
或覆蓋DrawCore方法並定義一個新的筆畫類型。 Custom Rendering Ink(MSDN)
謝謝:)我會嘗試新的方法。我認爲它是直接在Inkcanvas上繪製而不是轉換路徑的好主意。 –
是的。像往常一樣保存一些內存和處理,並且在觸筆點旁邊不支持火盆點。 – hemarn