2018-12-27-WPF-从-DrawingVisual-转-BitmapImage-图片
| title | author | date | CreateTime | categories |
|---|---|---|---|---|
|
WPF 从 DrawingVisual 转 BitmapImage 图片
|
lindexi
|
2018-12-27 11:31:52 +0800
|
2018-12-23 12:4:51 +0800
|
WPF
|
有一些库的设计是需要传入一个 BitmapImage 图片,但是我需要从界面代码创建图片,我没有文件,如何通过 DrawingVisual 画出的控件转换 BitmapImage 传给库?
需要将 DrawingVisual 转为 RenderTargetBitmap 然后将 RenderTargetBitmap 转为 BitmapImage 才可以
先创建一个 DrawingVisual 在里面绘制一些内容
DrawingVisual drawingVisual = new DrawingVisual();
DrawingContext drawingContext = drawingVisual.RenderOpen(); // 画出界面 drawingContext.Close();
如在里面写文字
DrawingVisual drawingVisual = new DrawingVisual();
DrawingContext drawingContext = drawingVisual.RenderOpen(); drawingContext.DrawText(new FormattedText("欢迎访问我博客 http://lindexi.gitee.io 里面有大量 UWP WPF 博客",
CultureInfo.GetCultureInfo("zh-cn"),
FlowDirection.LeftToRight,
new Typeface("Verdana"),
36, System.Windows.Media.Brushes.Black),
new System.Windows.Point(200, 116)); drawingContext.Close();
写完之后可以将他转换为 RenderTargetBitmap 请看代码
RenderTargetBitmap bmp = new RenderTargetBitmap(宽度, 高度, 96, 96, PixelFormats.Pbgra32);
bmp.Render(drawingVisual);
需要自己知道截图的宽度和高度才可以,另外这里的 96 是 dpi 的大小
将 DrawingVisual 转 RenderTargetBitmap 就可以通过 PngBitmapEncoder 将 RenderTargetBitmap 转图片
var bitmapImage = new BitmapImage();
var bitmapEncoder = new PngBitmapEncoder();
bitmapEncoder.Frames.Add(BitmapFrame.Create(bmp)); using (var stream = new MemoryStream())
{
bitmapEncoder.Save(stream);
stream.Seek(0, SeekOrigin.Begin); bitmapImage.BeginInit();
bitmapImage.CacheOption = BitmapCacheOption.OnLoad;
bitmapImage.StreamSource = stream;
bitmapImage.EndInit();
}
通过这个方法就可以将 DrawingVisual 转 BitmapImage 虽然这个方法的速度比较慢
2018-12-27-WPF-从-DrawingVisual-转-BitmapImage-图片的更多相关文章
- 2018.12.02 Socket编程之初识Socket
Socket编程主要分为TCP/UDP/SCTP三种,每一种都有各自的优点,所以会根据实际情况决定选用何种Socket,今天开始我将会逐步学习Socket编程,并将学习过程记录于此. 今天学习的是TC ...
- OPPO Developers Conference(2018.12.26)
时间:2018.12.26地点:北京国家会议中心
- Tencent Cloud Developers Conference(2018.12.15)
时间:2018.12.15地点:北京朝阳悠唐皇冠假日酒店
- 2018.12.1 Test
目录 2018.12.1 Test A 串string(思路) B 变量variable(最小割ISAP) C 取石子stone(思路 博弈) 考试代码 B C 2018.12.1 Test 题目为2 ...
- 12.27 cf div3 解题报告
12.27 cf div3 解题报告 wxy.wxy,带上分拉,全场做了个无脑小白 比赛场地 A: T1,跟着模拟就好了 B: sort一遍之后 去除的数一定是a[1]或者a[n] 比较去除谁小就输出 ...
- 「版本升级」MyEclipse CI 2018.12.0正式发布
新版本MyEclipse为WildFly 14新增一个新的服务器连接器,改进性能并新增一些Java 10修复程序.新版本为IDE做了几个核心修复,这是MyEclipse 2018一个更棒的升级. [M ...
- 微信小程序 - 接口更新记录以及解决方案(2018/12/26)
2018/8/17 - 背景音频需要在app.json添加requireBackGroundModes 2018/9/12 - 微信更改获取用户信息接口/获取位置等接口 - button 2018/1 ...
- 调试大叔V2.1.0(2018.12.17)|http/s接口调试、数据分析程序员辅助开发神器
2018.12.17 - 调试大叔 V2.1.0*升级http通讯协议版本,完美解决Set-Cookie引起的系列问题:*新增Content-Type编码格式参数,支持保存(解决模拟不同网站或手机请求 ...
- 【VSCode】Windows下VSCode编译调试c/c++【更新 2018.03.27】
--------– 2018.03.27 更新--------- 便携版已更新,点此获取便携版 已知BUG:中文目录无法正常调试 用于cpptools 0.15.0插件的配置文件更新 新的launch ...
- loli的测试-2018.12.9
模拟赛-2018.12.9 这是NOIP之后第一次模拟赛...但是考的比较悲惨. 非常喜欢写考试总结,不知道为什么... T1:https://www.luogu.org/problemnew/sho ...
随机推荐
- 记录--uni-app实现蓝牙打印小票
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 说明 基于uni-app开发,调用官方蓝牙相关api实现连接蓝牙与向蓝牙热敏打印机发送字节流,可打印文字,二维码,图片,调整字体大小等,本 ...
- 记录-JS 基础知识大全
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 1.通过javascript向文档中输出文本 document是javascript的内置对象,代表浏览器的文档部分 document.w ...
- echarts中实现多个label
先来个效果图 如果你刚好需要实现这种效果,那么可以瞅一瞅了 我要开始水文了 如图所示,图中顶部部分文字乍一看好像是独立于柱状图,显示在最顶上,其实它也是由柱状图模拟而成. 只是吧图形相关属性做了隐藏, ...
- mybatis使用Hashmap传递参数
mapper 1 <!--传递map的key --> 2 <insert id="addUser2" parameterType="map"& ...
- 测试开发之网络篇-OSI七层协议
今天,我们来了解一下OSI(Open System Interconnect)开放式系统互连.它是ISO组织在1985年发布的网络互连模型,该标准定义了网络互连的七层框架.其内容简述如下: 我们办公室 ...
- 从零开始学Spring Boot系列-集成MyBatis-Plus
在Spring Boot应用开发中,MyBatis-Plus是一个强大且易于使用的MyBatis增强工具,它提供了很多实用的功能,如代码生成器.条件构造器.分页插件等,极大地简化了MyBatis的使用 ...
- #单调栈,树状数组#CF1635F Closest Pair
题目 设 \(f(x,y)=|a_x-a_y|*(w_x+w_y)\),其中 \(a\) 单调递增 多组询问求 \(\min_{l\leq l'<r'\leq r}\{f(l',r')\}\) ...
- Debian 11 x64 安装 MySQL 8.0.33
更新 sudo apt update sudo apt install gnupg 安装 DEB Package wget -c https://dev.mysql.com/get/mysql-apt ...
- el-table边框颜色修改—骨灰级
一.前言说明 1. 网上很多都是通过上下左右边框方式,如: .el-table { border-bottom: 1px solid black; border-right: 1px solid bl ...
- 【开源三方库】Fuse.js:强大、轻巧、零依赖的模糊搜索库
开源项目 OpenHarmony 是每个人的 OpenHarmony 曹天恒 公司:中国科学院软件研究所 小组:知识体系工作组 1.简介 Fuse.js是一款功能强大且轻量级的JavaScript ...