c#-将inkCanvas中的图像另存为png或jpeg文件
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c#-将inkCanvas中的图像另存为png或jpeg文件,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1515字,纯文字阅读大概需要3分钟。
内容图文
这是我的WPF代码
< InkCanvas x:Name =“ inkCanvas” Margin =“ 9,325,210,193” Background =“ Azure”>< / InkCanvas>
还有一个按钮
当按下按钮时,我想将绘制的图像保存到文件中.这是我的代码
private void button1_Click(object sender, RoutedEventArgs e)
{
int margin = (int)inkCanvas.Margin.Left;
int width = (int)inkCanvas.ActualWidth - margin;
int height = (int)inkCanvas.ActualHeight - margin;
RenderTargetBitmap rtb = new RenderTargetBitmap(width, height, 96, 96, PixelFormats.Default);
rtb.Render(inkCanvas);
using (FileStream fs = new FileStream("path", FileMode.Create))
{
BitmapEncoder encoder = new PngBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(rtb));
encoder.Save(fs);
}
}
但是,如果用油漆打开,则显示的图像全是黑色(从浏览器中掠过)或白色.
我该怎么做才能完全获得绘制的图像? ty.
解决方法:
问题是您试图将矢量图形另存为位图,那是不可能的,因此首先需要绘制矢量,然后保存图形
此类将Ink绘制到现有位图上
public class InkImage
{
public static BitmapFrame MergeInk(StrokeCollection ink, BitmapSource background)
{
DrawingVisual drawingVisual = new DrawingVisual();
using (DrawingContext drawingContext = drawingVisual.RenderOpen())
{
drawingContext.DrawImage(background, new Rect(0, 0, background.Width, background.Height));
foreach (var item in ink)
{
item.Draw(drawingContext);
}
drawingContext.Close();
var bitmap = new RenderTargetBitmap((int)background.Width, (int)background.Height, background.DpiX, background.DpiY, PixelFormats.Pbgra32);
bitmap.Render(drawingVisual);
return BitmapFrame.Create(bitmap);
}
}
}
然后您可以使用JPEG或PNG编码器保存位图
内容总结
以上是互联网集市为您收集整理的c#-将inkCanvas中的图像另存为png或jpeg文件全部内容,希望文章能够帮你解决c#-将inkCanvas中的图像另存为png或jpeg文件所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。