当前位置:   article > 正文

WPF 开发 —— 画笔,墨迹渲染(InkCanvas)_wpf 画笔 钢笔字

wpf 画笔 钢笔字

在 WPF 中实现画笔非常简单,基于 InkCanvas 可以实现各种笔形的绘图,以及图形擦除。

备注:很多早期的 WPF 文章基于 InkPresenter 实现,基本上是说 Winphone 平台,在 Win10 中 InkPresenter 相关代码可以编译,但是运行没有效果,应该用 InkCanvas 替代,他们的接口是一样的。

在 InkCanvas 的绘图模型中,笔迹(或者墨迹)通过 Stroke (一笔,一划)组织,一个 Stroke 包含一个个 StylusPointCollection (笔迹集)和一个 DrawingAttributes (笔形)。StylusPointCollection 包含多个 StylusPoint (笔迹)。

InkCanvas 的使用方法如下:(注意不能透明 Opacity="1")

  1. <InkCanvas Grid.Row="1" Grid.Column="1" x:Name="inkCanvas" Height="500" Width="600"
  2. PreviewMouseDown="inkCanvas_MouseLeftButtonDown"
  3. LostMouseCapture="inkCanvas_LostMouseCapture"
  4. MouseMove="inkCanvas_MouseMove"
  5. Opacity="1">
  6. </InkCanvas>

下面的代码片段将捕获的笔迹(鼠标位置)转换为 StylusPoint,并加入到 StylusPointCollection 中。

  1. StylusPointCollection stylusPointCollection = new StylusPointCollection();
  2. Point pt = e.GetPosition(inkCanvas);
  3. stylusPointCollection.Add(new StylusPoint(pt.X, pt.Y));
  4. //stylusPointCollection.Add(e.StylusDevice.GetStylusPoints(inkCanvas));

在电脑上通过鼠标模拟画笔,因为没有画笔硬件设备,所以 StylusDevice (画笔设备)为 NULL,不能通过 GetStylusPoints 获取 StylusPoint (上面注释掉的代码)。

后续内容:

  1. 实现删除笔迹
  2. 捕获触摸板事件
  3. 实现多点触摸
  4. 提高响应性能

参考资料:

  1. 利用WPF InkCanvas水墨控件圈选移动笔画
  2. #481 – 在InkCanvas 上使用鼠标绘图(You Can Draw On an InkCanvas Control with the Mouse)
  3. WPF InkCanvas MouseDown及MouseLeftButtonDown事件不触发的代替事件
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/191343
推荐阅读
相关标签
  

闽ICP备14008679号