最近做的项目,是对WPF InkCanvas进行操作,现在网上的教程多数都是简单的引用InkCanva,然后对InkCanvasEditingMode进行简单的设置,实现笔迹的颜色,擦除,写等操作,这些基础的内容在项目开发中几乎无法使用,近期将会持续更新,在这个项目中对InkCanva使用及理解
1.对如何对笔迹进行缩放与位移
首先笔迹Stroke不是继承自UIElement,几乎所有的控件,图形都继承UIElement,但笔迹不是,这就导致对笔迹的常用操作失效,比如InkCanvas.SetLeft,Panel.GetZIndex,Panel.SetZIndex,这些功能都需要继承自UIElement,所以Stroke无法通过传统方式进行移动,面板展示是固定的。
那如何解决这个问题,可以通过Transform,Stroke支持转换方法
public virtual void Transform(Matrix transformMatrix, bool applyToStylusTip)
所以平移可以通过如下方式实现
TranslateTransform translate = new TranslateTransform(); translate.X = point.X; translate.Y = point.Y; Matrix matrixTranslate = translate.Value; _stroke.Transform(matrixTranslate, false);
X和Y代表要移动过去的点,Transform第二个bool参数代表笔迹是否需要跟着进行变化,比如放大或者缩小