社区
C#
帖子详情
关于bitmap复制的效率问题
shanying_0
2008-09-16 01:30:15
我有1个大的bitmap,我想复制他,以为要频繁的复制使用他,所以就要考虑效率的问题!!!
有没有什么好的方法么
1》DrawImage方法不行!
//Bitmap tempbitmap = new Bitmap(insertrect.Width, insertrect.Height);以为要new出一块来存放我复制下来的bitmap。所以效率不理想
2》Clone 方法比上一个稍微好点。但是效果也不理想。
大家还有什么好的建议么?????
...全文
624
8
打赏
收藏
关于bitmap复制的效率问题
我有1个大的bitmap,我想复制他,以为要频繁的复制使用他,所以就要考虑效率的问题!!! 有没有什么好的方法么 1》DrawImage方法不行! //Bitmap tempbitmap = new Bitmap(insertrect.Width, insertrect.Height);以为要new出一块来存放我复制下来的bitmap。所以效率不理想 2》Clone 方法比上一个稍微好点。但是效果也不理想。 大家还有什么好的建议么?????
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Mittermeyer
2008-09-16
打赏
举报
回复
看起来就是做一个图片的漫游呀,我觉得问题在于是不是每次都需要创建一个临时的Bitmap。
我觉得这类应用通常是这样的,完整地图(总背景)是一个Bitmap,然后创建一个和输出视口一样大的Bitmap作为缓存,每次显示位置变化时,把背景绘制到缓存的Bitmap上(这是不需要创建新的Bitmap的),然后再在缓存的Bitmap上绘制其它内容,最后输出到窗口DC上就可以了。
如果觉得GDI+慢,就用GDI吧。
如果不知道怎么把一个Bitmap绘制到另一个Bitmap上的话,看下面的代码:
Graphics g = Graphics.FromImage(bmpBuf);
g.DrawImage(...);
GDI的话就是创建一个兼容DC,过程和GDI+类似。
shanying_0
2008-09-16
打赏
举报
回复
楼上的大哥。“貌似DrawImage即便是绘制图片的一部分和整幅图也没啥区别,不过即便如此的话,也要比创建一个新的Bitmap要好些呀。“
我明白你的意思。但是我要把绘制图片的一部分放在内存中。你说是不是要建立一个先的bitmap!!!
在说了,利用双缓冲绘制图形,首先不是的要建立一个内存的bitmap么。然后把内存的bitmap显示到绘制表面上。
我现在的问题是第1次在内存的bitmap上绘制以后,由于某些操作,我需要把原来内存上一部分保留。另一部分进行重新绘制,但是保留的部分并不是原来的位置(可能向左移动,也可能向右移动!),我需要移动他的位置以适应新的。然后把剩余的内存bitmap进行从新绘制,然后在显示到绘制表面上!!
这个过程中。在保留原来内存bitmap的时候是不是需要建立个新的bitmap,然后在把这个bitmap绘制到原来内存bitmap上呀!!!这就需要建立个新的bitmap对象!!这样一样效率貌似就蜗牛了。
有没有好的好的方法实现我说的呢,并且不用建立一个新的bitmap!!!!
Mittermeyer
2008-09-16
打赏
举报
回复
PS:为什么DrawImage不行,如果DrawImage不行,那么bltbit就可以了?两者做的事情本质是一样的。
就效率而言,个人经验,bltbit好些。貌似DrawImage即便是绘制图片的一部分和整幅图也没啥区别,不过即便如此的话,也要比创建一个新的Bitmap要好些呀。
Mittermeyer
2008-09-16
打赏
举报
回复
看你的需求知不是是要把Bitmap绘制一下而已,而不需要再内存中重建一个新的Bitmap呀。
绘图函数中可以绘制整个Bitmap,也可以只绘制一部分。
shanying_0
2008-09-16
打赏
举报
回复
鼠标每次移动。我都要处理的啊。只是每次都重新绘制小的部分。复制大的部分!!!!
现在的问题是如何最有效率的复制大的部分。
gdi+中有什么好方法?
或是gdi中。还有问一下。gdi中bltbit效率如何!!!
shanying_0
2008-09-16
打赏
举报
回复
我就是用Clone()复制了其中的一块。现在的问题是我的bitmap大小是1000*800
而我clone的大小大约是900*700。剩余的部分我要重画!!
为就是为了考虑效率才想复制很大一块不需要重新画的呢。要是全重画效率还蜗牛呢!!!!
现在的问题是这快不要重画的部分如何的处理
我是用的双缓冲的绘制。
cpio
2008-09-16
打赏
举报
回复
Bitmap (Image) 从指定的现有图像初始化 Bitmap 类的新实例。
看看这样行不行?它可以创建新实例
brallow
2008-09-16
打赏
举报
回复
这种问题需要考虑你的算法的本质。
你真的需要复制整块 Bitmap吗?
在Clone函数中可以只复制一个bitmap的一部分,为什么不尝试着优化你的算法,只复制bitmap的部分并修改这一部分来解决这个问题呢?
如果你要使用GDI进行这种类型的绘制,的确是会比较慢。这一点没办法解决。
bitmap
数据结构
复制
在这里,我们主要讨论如何理解和操作
Bitmap
数据结构,以及进行
Bitmap
复制
的相关知识点。 首先,理解
Bitmap
数据结构的基础是了解其组成。
Bitmap
通常由以下几个部分构成: 1. **文件头**:包含了关于位图文件的元...
用MFC绘制
Bitmap
使用`BitBlt`函数可以将内存DC中的
Bitmap
复制
到窗口DC上: ```cpp pDC->BitBlt(x, y,
bitmap
.GetWidth(),
bitmap
.GetHeight(), &memDC, 0, 0, SRCCOPY); ``` `BitBlt`函数的参数包括目标位置`(x, y)`、源位图的...
银联8583报文解析和位图测试工具
银联MIS交易调试的神器工具,不仅包含
BitMap
位图的解析和生成,更重要的是8583交易报文的自动解析,直接将报文
复制
进去,可动态解析出每个域的内容,大大提高开发测试
效率
android
复制
bitmap
_Android——Nv21高
效率
转
Bitmap
查找
问题
最近在项目中遇到将摄像头数据处理后转
Bitmap
的内存溢出
问题
,大概运行到七八个小时后,就出现了内存溢出,后来看了一下错误提示发现
bitmap
=
Bitmap
Factory.decodeByteArray(stream.toByteArray(), 0, ...
Bitmap
快速读写(
Bitmap
中GetPixel和SetPixel
效率
低)
【代码】
Bitmap
快速读写(
Bitmap
中GetPixel和SetPixel
效率
低)
C#
111,094
社区成员
642,554
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章