WPF的canva生成图片的背景是黑色而不是透明,怎么解决?

四袋粉 2015-07-17 04:03:39
wpf使用canvas生成图片的代码:
// 生成png
public void ConvertToPng(Canvas canvas)
{
if (mFonts.Count.Equals(0))
return;
double d = canvas.Height;
RenderTargetBitmap bmp = new RenderTargetBitmap(100, 100, 96, 96, PixelFormats.Default);
bmp.Render(canvas);
string file = @"E:\Picture\test.png";
string Extension = System.IO.Path.GetExtension(file).ToLower();
BitmapEncoder encoder = new JpegBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(bmp));
using (Stream stm = File.Create(file))
{
encoder.Save(stm);
}
}
生成的图片应该为透明的部分,为什么是黑色的,应该如何来使图片背景变为透明。
...全文
1155 3 打赏 收藏 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
检查你的 JpegBitmapEncoder(),换 wpf 比较普通、通用的控件截取成图片方法。
jy251 2015-07-20
  • 打赏
  • 举报
回复
首先根据文件路径获取到filestream,用file.open。 将这个stream中的内容读取到某个byte数组中以后,关掉,免得一直占用文件。 将这个byte转换成bitmap,是system.drawing中的bitmap,别搞错了,你需要手动添加这个引用。在.net引用里面找。 使用bitmap.maketransparent将背景颜色去掉。 将这个bitmap对象保存到某个memstream中,记得save的时候要选择png模式的图片,否则绝对是黑色背景。 将这个memstream加载到image的source中,然后看你的透明背景图吧!
代码下载链接: https://pan.quark.cn/s/90fbf78c3289 "1元云购"是一种依托互联网的购物方式,用户仅需投入微小的资金(一般为一元)便有机会赢取高价值商品。此类模式常借助抽奖机制来判定获胜者,从而吸引众多用户加入。"1元云购源代码"是承载该业务流程的程序代码,其用途在于搭建一个完整的1元云购系统。 在构建1元云购源代码的过程中,主要包含以下几个核心技术要点: 1. **数据库架构**:为了有效存储商品详情、用户资料、交易历史及开奖结果,必须设计科学合理的数据库框架。这包括商品数据表、用户信息表、订单记录表和开奖记录表等,确保数据的统一性与完整性。 2. **支付渠道对接**:1元云购平台需与第三方支付服务(例如支付宝、微信支付)进行对接,以实现用户的在线支付操作。这涉及API接口调用、交易状态同步、退款流程管理等环节。 3. **随机数生成策略**:抽奖过程的核心在于公平透明地选定获奖者,通常采用随机数生成策略来实现。该策略需保障每位参与者拥有相等的获奖机会,同时防止欺诈行为。 4. **用户界面开发**:卓越的用户体验是吸引参与者的关键因素。前端页面应兼具视觉吸引力与操作便捷性,清晰展示商品信息、购买步骤、中奖规范等,并提供用户注册、登录、查询订单等功能。 5. **服务器程序设计**:后端系统负责处理用户请求,如管理订单、计算中奖号码、更新数据库信息等。这部分通常采用PHP等服务器端技术实现,需应对并发访问与高负载情形。 6. **安全措施**:1元云购平台可能面临恶意攻击,例如SQL注入、XSS跨站脚本攻击等。因此,源代码需遵循安全编程准则,对用户输入进行过滤与校验,同时运用HTTPS等加密手段保障数据传输安全。 7. **...

111,128

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧