当前位置: 首页 > wzjs >正文

常德网站建设百度竞价返点开户

常德网站建设,百度竞价返点开户,东营建设局官网,网站做公司wpf在image控件上快速显示内存图像https://www.cnblogs.com/haodafeng/p/10431387.html 如果你在寻找能够快速在image控件刷新大图像(比如分辨率3000*3000的图像)的办法,尤其是想把内存中的裸数据(只有图像的数据,不包…

wpf在image控件上快速显示内存图像https://www.cnblogs.com/haodafeng/p/10431387.html

 

如果你在寻找能够快速在image控件刷新大图像(比如分辨率3000*3000的图像)的办法,尤其是想把内存中的裸数据(只有图像的数据,不包含图像头等信息)快速显示到界面,那么你来对地方了,看完这篇博客会解决困扰了你一天,或者一个礼拜,或者一年,或者一辈子的问题,时间的长短取决于你看到这篇博客的时间。

请注意:如果本篇博客对于解决你的问题起到了决定性的作用,那么请在你的代码里加上以下两行内容,请尊重别人的努力。转载请注明出处

// provide by zhangshaohui 

// 本文网址

以下是正文:

在你寻找解决方案的过程中,一定看到过这样的代码:

1、这个代码最常见,网上到处都是,的确可以用,也简单清晰,但是速度太慢,显示一个3000*3000的大概要40ms,我跟踪了一下代码,主要是new stream,以及EndInit比较耗时,但是用这个方法又绕不过去这两行代码。

复制代码

  public BitmapImage BitmapToBitmapImage(Bitmap bitmap){using (MemoryStream stream = new MemoryStream()){bitmap.Save(stream, ImageFormat.Png); stream.Position = 0;BitmapImage result = new BitmapImage();result.BeginInit();result.CacheOption = BitmapCacheOption.OnLoad;result.StreamSource = stream;result.EndInit();result.Freeze();return result;}}

复制代码

2、这个也是常见的办法,好像还是msdn上推荐的,缺点是更慢

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

public static ImageSource ChangeBitmapToImageSource(Bitmap bitmap)

       {

           IntPtr hBitmap = bitmap.GetHbitmap();

           ImageSource wpfBitmap = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(

               hBitmap,

               IntPtr.Zero,

               Int32Rect.Empty,

               BitmapSizeOptions.FromEmptyOptions());

           if (!APIConverter.DeleteObject(hBitmap))

           {

               throw new System.ComponentModel.Win32Exception();

           }

           return wpfBitmap;

       }

  

如果对于显示速度没有什么要求,那么这两个办法还是可以用用的,但是如果对于性能有要求,而且又数据量很大,比如接收超高清的视频数据,那么这两个方法是完全满足不了需求的。

本文的方案是:

1、以显示3000 * 3000的图像为例,下面的代码是伪代码

2、定义ImageSource ImgSource,ImgSource绑定到image控件的Source属性 

3、PixelFormats.Gray16,定义为PixelFormats.Gray8也是可以的,不过就需要在WriteableBitmap构造函数最后一个参数添加伪彩表,当然还可定义rgb的格式,这个看裸数据的格式以及需求来了,这里只是抛砖引玉,方法是通用的。

4、本方案的优点是没有频繁的内存分配和释放,既节省时间,又不用担心内存溢出,想更新哪里更新哪里,代码简单易懂,速度极快

 

复制代码

ViewModel中public class MainWindowViewModel : ViewModelBase{private WriteableBitmap _wbBitmap;public MainWindowViewModel(){_wbBitmap = new WriteableBitmap(3000, 3000, 96, 96, PixelFormats.Gray16, null);ImgSource = _wbBitmap;}    public void ShowImage(short[] rawData)// rawData是存储图像裸数据的buffer{unsafe{_wbBitmap.Lock();Marshal.Copy(rawData,0,_wbBitmap.BackBuffer,3000*3000); //请注意_wbBitmap的数据格式以及buffer大小,以免溢出和显示异常
_wbBitmap.AddDirtyRect(new System.Windows.Int32Rect(0, 0, 3000, 3000)); _wbBitmap.Unlock(); } } } 

复制代码

http://www.dtcms.com/wzjs/485649.html

相关文章:

  • 苏州做网站推广的品牌推广策略与方式
  • 深圳专业建设网站服务企业推广方案
  • 邯郸做移动网站的地方镇江关键字优化公司
  • 网站的建设步骤包括网站收录软件
  • 如何在阿里云做网站网站建立
  • 中国那个公司的网站做的最好看seo实战培训中心
  • 前端旅游网站行程怎么做做优化的网站
  • 网站备案麻烦吗网站关键词挖掘
  • b2b网站推广优化关键词搜索推广排行榜
  • 企业建设网站的功能是什么意思百度关键词指数
  • 济南比较好的网站建设公司谷歌浏览器下载安装2022最新版
  • 哪些网站是php做的快速seo整站优化排行
  • 校园网站建设与实现毕业论文大数据营销的案例
  • 旅游网站的系统建设的意义商业软文
  • 云南旅游网站建设苏州网站制作公司
  • 做彩票的网站吗整站多关键词优化
  • 网站特点怎么写宁波seo整体优化公司
  • 网站开发难吗怎么打广告宣传自己的产品
  • 浙江网站建设品牌有哪些搜索引擎网站
  • 网站建设与管理岗位产品怎么在网上推广
  • 邢台新增确诊病例轨迹郑州seo技术培训班
  • 临沂教育平台网站建设免费网站怎么注册
  • 模板网点地址信息错误获取发货地址失败企业网站优化报告
  • 域名有了主机有了如何做网站网络营销有哪些特点
  • 微信公众号影视网站怎么做建设企业网站多少钱
  • 支付宝 外贸网站公司网站建设推广
  • 网站图片悬浮代码八宿县网站seo优化排名
  • 优质做网站哪家好有人看片吗免费观看视频
  • 网站后台系统是用什么做的上google必须翻墙吗
  • 道德建设 网站网站运营一个月多少钱