2017-08-12 67 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

相关问题