WPF中InkCanvas(墨水面板)用法

感谢Sacha Barber 为我们提供如此Cool的Demo
你可以在这里下载到它 http://files.cnblogs.com/zhouyinhui/InkCanvas.rar

InkCanvas1.png

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



保存

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

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

this .inkCanv.Strokes.Save(file);

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

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

 RenderTargetBitmap rtb  =   new  RenderTargetBitmap(width ,height 0 0 , PixelFormats.Default);
 rtb.Render(
this .inkCanv);
 BmpBitmapEncoder encoder 
=   new  BmpBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(rtb));
  encoder.Save(file);

 



打开

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

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

 



选定

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

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

使用代码选定
你可以调用InkCanvas的Select()方法



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

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


橡皮擦

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


笔迹颜色、粗细...

要更改笔迹的相关属性,可以设置InkCanvas的DefaultDrawingAttributes属性,比如:
            DrawingAttributes inkDA  =   new  DrawingAttributes();
            inkDA.Width 
=   5 ;
            inkDA.Height 
= 5 ;
            inkDA.Color 
=  Color.FormArgb( 255 , 255 , 255 , 255 );
            
this .inkCanv.DefaultDrawingAttributes  =  inkDA;


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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
墨水面板InkCanvas)是WPF的一个可视化控件,用于创建一个绘制和擦除墨水笔画的画布。以下是InkCanvas用法: 1. 添加InkCanvas控件:在XAML文件,可以通过使用<InkCanvas>标签来添加InkCanvas控件,如下所示: <InkCanvas Name="myInkCanvas" Width="500" Height="300" /> 2. 添加墨水笔画:可以使用墨水笔在InkCanvas上进行绘制。可以通过设置墨水笔的颜色、宽度等属性来自定义绘制的笔画。 myInkCanvas.DefaultDrawingAttributes.Color = Colors.Red; myInkCanvas.DefaultDrawingAttributes.Width = 4; myInkCanvas.DefaultDrawingAttributes.Height = 4; 3. 擦除墨水笔画:可以使用墨水橡皮擦除InkCanvas上的墨水笔画。可以通过设置InkCanvas的EditingMode属性为EraseByStroke或EraseByPoint来选择擦除的模式。 myInkCanvas.EditingMode = InkCanvasEditingMode.EraseByStroke; 4. 保存和加载墨水笔画:可以将InkCanvas上的墨水笔画保存为图片文件或加载已有的墨水笔画文件。 // 保存墨水笔画为图片 using (FileStream fs = new FileStream("myDrawing.png", FileMode.Create)) { myInkCanvas.Strokes.Save(fs); } // 加载墨水笔画 using (FileStream fs = new FileStream("myDrawing.png", FileMode.Open)) { myInkCanvas.Strokes = new StrokeCollection(fs); } 5. 处理墨水笔画事件:可以为InkCanvas上的墨水笔画添加事件处理程序,以响应用户的操作。例如,可以为StrokeCollected、StrokeErased等事件添加处理逻辑。 myInkCanvas.StrokeCollected += MyInkCanvas_StrokeCollected; myInkCanvas.StrokeErased += MyInkCanvas_StrokeErased; private void MyInkCanvas_StrokeCollected(object sender, InkCanvasStrokeCollectedEventArgs e) { // 处理墨水笔画绘制完成事件 } 总的来说,InkCanvas提供了一个方便易用的方式来实现墨水笔画的绘制和擦除功能,并且可以方便地保存、加载和处理墨水笔画。可以根据具体需求,进一步自定义和扩展InkCanvas的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值