- 1、本文档共52页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2.2.4 墨迹笔画(Stroke)和墨迹数据(StrokeCollection) 2.StrokeCollection对象 在WPF中,墨迹数据用墨迹集合(StrokeCollection对象)来表示 该集合中的每个成员都是一个Stroke对象,而且每个Stroke对象都自动拥有自己的生命周期。 在InkCanvas类或者从该类继承的类中,WPF会自动将一组Stroke对象收集到一个StrokeCollection内,并自动提供常用的墨迹管理和操作方法(命中测试、擦除、转换、序列化、保存、加载、复制、粘贴等)。 直接用从InkCanvas继承的类和StrokeCollection对象来实现墨迹的各种处理功能。 2.3 自定义墨迹画板 2.3.1 静态呈现和动态呈现 2.3.2 制作自定义墨迹控件 2.3.1 静态呈现和动态呈现 墨迹呈现方法: 动态和静态。 为了能绘制各种自定义的形状,一般情况下,我们需要创建一个既能动态呈现墨迹又能静态呈现墨迹的自定义墨迹控件。 2.3.1 静态呈现和动态呈现 1.静态呈现 静态呈现是指将墨迹添加到控件之后再显示墨迹。 添加方式有: 通过触笔添加、从剪贴板中粘贴、从文件中加载 静态呈现墨迹的办法是自定义从Stroke类继承的类。 由于Stroke对象会自动收集StylusPoint数据、创建笔画以及将笔画添加到自定义的墨迹控件上,因此我们只需要在自定义的类中重写引发触笔事件的DrawCore方法,即可实现静态呈现功能。其他引发触笔事件的方法可以根据需要决定是否重写。 2.3.1 静态呈现和动态呈现 2.动态呈现 动态呈现是指在移动触点的过程中同时呈现墨迹。在这种方式下,墨迹看上去好像是用触笔画出来的。 动态呈现墨迹的办法: 是将自定义墨迹控件的DynamicRenderer属性设置为自定义的从DynamicRenderer类继承的类。 在自定义的类中,分别重写引发触笔事件的方法,常用的有OnStylusDown、OnStylusMove以及OnDraw等。其中OnDraw是必须重写的方法,其他方法可以根据需要决定是否重写。 注意 如果用鼠标来模拟触笔,动态呈现时,它每次收集到的墨迹数据只有两个点,注意这和静态呈现时已经有很多个点的情况完全不同。 2.3.2 制作自定义墨迹控件 创建自定义墨迹画板 创建自定义墨迹画板的办法就是让其继承自InkCanvas类。 一个InkCanvas可以具有一个或多个动态呈现的对象(DynamicRenderer)。 在自定义的墨迹画板中,我们只需要将多个DynamicRenderer对象分别添加到StylusPlugIns属性中,再将其赋值给DynamicRenderer属性,即可将其添加到自定义的InkCanvas中 DynamicRenderer对象是一个特殊的StylusPlugIns对象,在WPF应用程序中,使用InkCanvas或者使用继承自InkCanvas类的自定义墨迹控件,不需要显式声明StylusPlugIns,只需要设计从DynamicRenderer继承的类,即可实现动态的即时呈现。 2.3.2 制作自定义墨迹控件 制作自定义墨迹画板的主要设计步骤如下。 创建一个从InkCanvas派生的类。 将自定义的DynamicRenderer分配给InkCanvas.DynamicRenderer属性。 重写OnStrokeCollected方法。在此方法中,移除已添加到InkCanvas中的原始笔画,然后创建一个自定义笔画,将其添加到Strokes属性中。 最后再使用包含该自定义笔画的新InkCanvasStrokeCollectedEventArgs调用基类相应的方法。 2.4 利用自定义墨迹画板实现动态绘图 2.4.1 绘制球形 2.4.2 绘制球形序列 2.4.3 绘制矩形和矩形序列 2.4.4 绘制图像和图像序列 2.4.5 绘制渐变直线 2.4.6 绘制渐变曲线和文字 2.4.7 选择、编辑、缩放与橡皮擦 2.4.8 保存和打开墨迹文件 2.4.1 绘制球形 【例2-2】演示如何利用InkCanvas自定义墨迹画板,并利用它绘制单个球形或圆环,运行效果如图2-3所示。 图2-3 例2-2的运行效果 2.4.2 绘制球形序列 【例2-3】使用鼠标拖动的办法,在自定义墨迹画板中绘制任意数量的球形序列,或者用球形序列绘制单个大小固定的球形。程序运行效果如图2-4所示。 图2-4 例2-3的运行效果 2.4.3 绘制矩形和矩形序列 【例2-4】使用鼠标拖动的办法,在自定义墨迹画板中绘制单个矩形和任意数量的矩形序列。运行效果如图2-5所示。 图2-5 例2-4的运行效果 2.
文档评论(0)