InkCanvas 控件获取签名式的墨迹

InkCanvas 控件获取签名式的墨迹,第1张

概述  IT我问网:http://www.itiask.com/Answer1/Topic/227.aspx   效果图 最后得到的结果   步聚: 1  先得到InkCanvas中墨迹Strokes的Bounds,返回一个Rect 2  用步骤1中得到的rect设置InkCanvas的Clip属性 3  用RenderTargetBitmap为设置后的InkCanvas来个快照   代码:     

IT我问网http://www.itiask.com/Answer1/Topic/227.aspx

效果图

最后得到的结果

步聚:

1 先得到InkCanvas中墨迹strokes的Bounds,返回一个Rect

2 用步骤1中得到的rect设置InkCanvas的Clip属性

3 用rendertargetBitmap为设置后的InkCanvas来个快照

代码:

private voID GetResultimage()

{

Rect rect = region.strokes.GetBounds();

Rect r = new Rect() { X = rect.X-5,Y = rect.Y-5,WIDth = rect.WIDth + 10,Height = rect.Height + 10 };
RectangleGeometry rg = new RectangleGeometry() { Rect = r };
region.Clip = rg; //关键
UpdateLayout(); //这一步很重要
// region.InvalIDateVisual();
rendertargetBitmap aaa= copyUIElementToClipboard(region,r );

SavefileDialog dlg = new SavefileDialog();
dlg.Filter = //"Ink Serialized Format (*.isf)|*.isf|" +
"Bitmap files (*.bmp)|*.bmp";
if ((bool)dlg.ShowDialog(this))
{
fileStream file = new fileStream(dlg.filename,
fileMode.Create,fileAccess.Write);

BmpBitmapEncoder encoder = new BmpBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(aaa));
encoder.Save(file);
file.Close();

region.Clip = null;
}

}

public rendertargetBitmap copyUIElementToClipboard(FrameworkElement ui,Rect rect)
{

double wIDth = rect.WIDth;
double height = rect.Height;
rendertargetBitmap bmp = new rendertargetBitmap((int)wIDth,
(int)height,96,PixelFormats.Default );
DrawingVisual dv = new DrawingVisual();
using (DrawingContext dc = dv.Renderopen())
{
VisualBrush vb = new VisualBrush(ui);
dc.DrawRectangle(vb,null,new Rect(new Point(),new Size(wIDth,height)));

}
bmp.Render(dv);
Clipboard.Setimage(bmp); //剪切板

return bmp; }

总结

以上是内存溢出为你收集整理的InkCanvas 控件获取签名式的墨迹全部内容,希望文章能够帮你解决InkCanvas 控件获取签名式的墨迹所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1287871.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-09
下一篇2022-06-09

发表评论

登录后才能评论

评论列表(0条)

    保存