如何将矩形或圆形状转换为WPF中的笔尖点集合?
问题描述:
我的问题有三个部分: 我可以在WPF画布上绘制线条,圆形,矩形和..等形状。我想使用InkCanvas功能,如清除和移动笔画。如何将矩形或圆形状转换为WPF中的笔尖点集合?
- 是否可以将此形状转换为手写笔集合 分并将此集合添加到InkCanvas?
- 如果可能我该怎么做?
- 有没有更好的方法来处理这种情况?
请引导我。
答
首先,答案是肯定的。您可以将路径转换为笔画集合,然后将其添加到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