WPF InkCanvas使用方法

开发 开发工具
WPF InkCanvas的常见用法包括:保存;打开墨迹文件;选定绘制的某些元素;使用鼠标选定;使用代码选定;橡皮擦等等。

WPF InkCanvas控件翻译成中文为墨水面板。对于它的一些相关概念在国内还是比较少的。在这里我们就为大家介绍一下使用中的经验总结。#t#

下面是WPF InkCanvas的常见用法(假设我们的InkCanvas对象为inkCanv):

保存

你可以选择将墨迹保存为墨迹文件或者保存为图片

保存为墨迹文件(*.isf):

  1. this.inkCanv.Strokes.Save(file); 

其中file为要保存到的文件流(FileStream)

保存为图片:

我们可以先将墨迹绘制到图片上再将图片保存,其中要将Visual对象绘制到图片上可以使用RenderTargetBitmap类,并采用其Render()方法.要将图片保存可以使用BitmapEncoder类,并调用其Save()方法.

  1. RenderTargetBitmap rtb = 
    new RenderTargetBitmap(width,
    height, 0, 0, PixelFormats.Default);  
  2. rtb.Render(this.inkCanv);  
  3. BmpBitmapEncoder encoder = 
    new BmpBitmapEncoder();  
  4. encoder.Frames.Add(Bitmap
    Frame.Create(rtb));  
  5. encoder.Save(file); 

WPF InkCanvas打开

要打开已保存的墨迹文件(*.isf),可以使用下面的方法:

  1. this.inkCanv.Strokes = 
    new StrokeCollection(file); 

WPF InkCanvas选定

向画图板一样,你可以选定绘制的某些元素,选定有两种方式,一是用户使用鼠标进行选定,另一种是程序使用代码选择指定的墨迹.

WPF InkCanvas使用鼠标选定

很简单地,你只需要切换InkCanvas的编辑模式就可以了.InkCanvas的EditingMode属性是InkCanvasEditingMode枚举类型,你可以将其值切换为InkCanvasEditingMode.Select以便进入选定模式.

使用代码选定

你可以调用InkCanvas的Select()方法

复制、剪切、粘贴或删除选定的对象

这几个操作都比较简单,InkCanvas有对应的方法,分别是CopySelection(),CutSelection(),Past()与Remove().

橡皮擦

要使用橡皮擦,与切换选定模式一样,同样是切换InkCanvas的EditingMode属性,擦除方式有两种,分别是InkCanvasEditingMode.EraseByPoint(按点擦除)与InkCanvasEditingMode.EraseByStroke(按墨迹笔画擦除,一次擦掉不间断的一笔).

WPF InkCanvas笔迹颜色、粗细...

要更改笔迹的相关属性,可以设置InkCanvas的DefaultDrawingAttributes属性,比如:

  1. DrawingAttributes inkDA = 
    new DrawingAttributes();  
  2. inkDA.Width = 5;  
  3. inkDA.Height =5;  
  4. inkDA.Color = Color.
    FormArgb(255,255,255,255);  
  5. this.inkCanv.Default
    DrawingAttributes
     = inkDA

WPF InkCanvas还有很多有趣的功能,你可以参考SDK中的InkCanvas类以获得更多.

责任编辑:曹凯 来源: 博客园
相关推荐

2009-12-28 13:28:03

WPF视频

2009-12-25 17:33:19

WPF TextBlo

2009-12-25 17:10:51

WPF动态资源

2009-12-25 17:58:12

WPF进度条

2009-12-24 17:38:18

WPF事件触发器

2012-01-13 09:55:54

jQuery

2011-02-24 13:09:10

FireFTP

2010-05-28 19:12:09

MySQL使用方法

2011-04-08 10:43:44

2017-08-18 14:01:44

大数据dataWrangle

2011-04-27 16:38:31

投影机

2009-11-17 17:38:37

PHP Session

2011-06-24 15:06:40

QT

2010-10-08 14:27:25

JavascriptSplit

2010-01-26 17:35:09

C++栈

2009-12-02 15:02:09

PHP simplex

2009-12-02 16:04:44

PHP fsockop

2013-07-15 15:12:40

iOS多线程NSOperationNSOperation

2010-01-28 17:07:03

Android Gal

2010-10-09 10:30:03

JS event
点赞
收藏

51CTO技术栈公众号