在Silverlight2 Beta2中实现手写功能

想象一下我们在纸上写字的过程,我们需要一张纸和一只笔,然后我们下笔开始写第一字的头一个笔画,运笔的过程中我们可以根据力度来控制笔画线条的轻重,最后收笔。然后写下一个笔画......。

在Silverlight2中这张纸就是InkPresenter控件,InkPresenter控件作为一组笔画(Stroke)的容器用来现实墨迹,Ink 引用的是笔、触摸屏和鼠标输入的笔迹或者画的内容。Silverlight 中的 Ink 由StrokeCollection对象构成,StrokeCollection对象由不同的Stroke对象组成。每个Stroke对应一个笔的按下、移动和抬起序列。Stroke可以是一个点、一条直线甚至一条曲线。每个Stroke 由一个 StylusPointCollection对象组成,它又有不同的StylusPoint组成。当笔与数字转换器接触并移动的时候,StylusPoint 对象是一个集合。我们可以通过该对象的DrawingAttributes属性来设置颜色,宽度,轮廓颜色等。

下图说明InkPresenter的结构:

 附件: 您所在的用户组无法下载或查看附件


InkPresenter不支持在该控件内来使用Stroke,StrokeCollection标记。你只能通过编程的方式来控制。下面就来简单实现一个例子来说明。InkPresenter控件中比较关键的事件为MouseLeftButtonDown,MouseMove,MouseLeftButtonUp,当InkPresenter接收到MouseLeftButtonDown事件,你需要创建一个新的Stroke在内存中,并且将其加入到StrokeCollection中,当MouseMove的时候我们将StylusPoints到Stroke中。MouseLeftButtonUp事件中结束Stroke。我们创建一个Silverlight项目,在page.xaml中添加如下代码:

Code


在page.xaml.cs中添加鼠标MouseLeftButtonDown,MouseMove,MouseLeftButtonUp的事件处理程序来实现手写功能代码如下:

Code


1.下面代码用来设置笔画颜色和轮廓颜色:

Code


运行项目后效果如下:

 附件: 您所在的用户组无法下载或查看附件

上面只是实现了最简单的手写功能,还有很多很多不完善的地方。

原文出处:http://www.cnblogs.com/carysun/archive/2008/08/03/slmanual.html

 感谢原创者的辛勤劳动,希望对您有所帮助,转载请注明原出处。
 您可能对 [Silverlight] 的这些文章也感兴趣:

Silverlight、JavaFX、Flex/Flash技术比较
一步一步学Silverlight 2系列(15):数据与通信之ASMX
使用Popfly GameCreator轻松构建Silverlight游戏--Part1
Silverlight 简明教程(1) -- Silverlight简介
SnipperImages(Silverlight DEMO)控件设计之--CheckBox
提高 Silverlight 应用程序性能的小贴士
Silverlight专题(10)- WatermarkedTextBox使用
一步一步学Silverlight 2系列(25):综合实例之Live Search
Silverlight 3一瞥
Microsoft Introduces Dynamic Silverlight