问个关于双缓冲的问题

问题描述

下了个双缓冲的示例代码,看了下.双缓冲是说把,控件现在内存中绘制好,再显示出来,我这样理解对吗?对控件加载速度有提升吗?我要写一个类似物品栏的界面,有几十个PictureBox用来显示图片,每次Hide(),Show()都要一个一个PictureBox刷新下来,会卡几秒.有什么好办法?谢谢了~~~

解决方案

解决方案二:
不会提升加载速度,但可以减轻控件重绘时的闪烁。这个东西就是要重绘才行的,你不让它们重绘......貌似没办法。呃,Hide之后控件还在内存的,没有释放。所以再次Show的时候也不存在重新加载,仅仅是重绘一次而已。这样都会卡几秒的话,可能是你的内存不敷使用了。

时间: 2024-07-28 17:23:53

问个关于双缓冲的问题的相关文章

实例解说双缓冲

本文配套源码 昨天在论坛上,有人问起双缓冲的实现问题,想起网上这方面资料比较凌乱,而且多是DirectX相关的,今天特地在这里给大家简要的介绍一下双缓冲技术及其在VC++的GDI绘图环境下的实现. 1.Windows绘图原理 我们在Windows环境下看到各种元素,如菜单.按钮.窗口.图像,从根本上说,都是"画"出来的.这时的屏幕,就相当于一块黑板,而Windows下的各种GDI要素,如画笔.画刷等,就相当于彩色粉笔了.我们在黑板上手工画图时,是一笔一划的,电脑亦然.只不过电脑的速度比

BitBlt()双缓冲解决图象闪烁

显示图形如何避免闪烁,如何提高显示效率是问得比较多的问题.而且多数人认为MFC的绘图函数效率很低,总是想寻求其它的解决方案. MFC的绘图效率的确不高但也不差,而且它的绘图函数使用非常简单,只要使用方法得当,再加上一些技巧,用MFC可以得到效率很高的绘图程序. 我想就我长期(呵呵当然也只有2年多)使用MFC绘图的经验谈谈我的一些观点. 1.显示的图形为什么会闪烁? 我们的绘图过程大多放在OnDraw或者OnPaint函数中,OnDraw在进行屏幕显示时是由OnPaint进行调用的.当窗口由于任何

MFC小游戏,使用双缓冲技术但是有些位图无法释放,导致GDI泄露

问题描述 MFC小游戏,使用双缓冲技术但是有些位图无法释放,导致GDI泄露 用MFC写了一个类似于魔塔的小游戏,但是发现会产生GDI泄露,运行一段时间就会崩掉,但是有些位图文件不能通过deleteObject释放,自己搞不太明白,请教一下各位. 解决方案 hero等对象应该是成员变量吧.从代码来看,hero中的picture载入的图片是固定的,那么完全没有必要在OnPaint函数中进行重复调用,完全是浪费,应该将这些代码放到hero对象初始化的地方,一次性完成就可以了. 另外,cDC指针最好也R

c++- 我用VS2010的GDI+写了双缓冲为什么还是画面抖动?

问题描述 我用VS2010的GDI+写了双缓冲为什么还是画面抖动? public: Graphics *gg; Graphics g=dc.GetSafeHdc(); gg->DrawImage(bk,0,0); gg->DrawImage(zj,x,y,0+frame*100,0,100,120,UnitPixel); g.DrawImage(&bb,0,0); 解决方案 Graphics g=dc.GetSafeHdc();此处的dc是兼容dc吗?若不是,建议使用兼容dc. 解决方

C#绘图双缓冲技术总结

GDI+的双缓冲问题终于搞定了, 真是松了一口气!一直以来的误区:.net1.1 和 .net 2.0 在处理控件双缓冲上是有区别的..net 1.1 中,使用:this.SetStyle(ControlStyles.DoubleBuffer, true); .net 2.0中,使用:this.SetStyle(ControlStyles.OptimizedDoubleBuffer, true);怪不说老是提示参数无效,一直也不知道是这个问题,呵呵 要知道,图元无闪烁的实现和图元的绘制方法没有多

关于j2me game双缓冲实现探讨

双缓冲技术的应用很广泛,设计游戏的时候更是需要它. 在midp1.0中,api中并没有game这个包,看到网上很多人在讨论设计游戏的时候会出现图片断裂,屏幕闪烁等问题. 我经过这几天的学习整理下自己的学习心得,用来抛砖,希望对此有研究高手们相互讨论.让我也学习学习. 双缓冲的原理可以这样形象的理解:把电脑屏幕看作一块黑板.首先我们在内存环境中建立一个"虚拟"的黑板,然后在这块黑板上绘制复杂的图形,等图形全部绘制完毕的时候,再一次性的把内存中绘制好的图形"拷贝"到另一

VC6下的GDI+双缓冲

一.概述 这段时间在研究GDI+双缓冲的实现方法,在网上花了很多时间都没有找到合适的示例,特别是针对VC6的.后来通过对网上资料的分析,和对SDK/MFC的学习,实现了VC6下的GDI+双缓冲,把它写出来与大家分享,希望可以找到更好的实现方法. GDI+的一个优点就是可以直接使用jpg图像,在这个示例中,我没有把图像文件放在资源中,而是动态读取,一是由于项目需求,图像数目是未知的:二是由于动态读文件效率低下,使用双缓冲更能体现出优势. 二.分析 在实现过程中,犯了一个错误,把读图像的方法放在了O

java中的双缓冲技术

毕业设计有个远程协助功能,得到对方的屏幕后,老是会闪,很是不爽,今天用java的双缓冲技术解决了.代码如下,本类重写了Swing中的JLabel,当Label重绘时,会默认的调用它的update方法,主要用于清除界面,然后update方法会调用paint方法,再把界面画上去,所以我现在update方法中创建了一个Image和Graphics对象Image off_screen_buf和off_screen_gc同时设置其大小和MyLabel对象的大小一样,用于把要画的东东先绘制到后台内存中,然后

使用双缓冲技术绘制曲线图

当数据量很大时,绘图可能需要几秒钟甚至更长的时间,而且有时还会出现闪烁现象,为了解决这些问题,可采用双缓冲技术来绘制曲线图. 双缓冲即在内存中创建一个与屏幕绘图区域一致的对象,先将图形绘制到内存中的这个对象上,再一次性将这个对象上的图形拷贝到屏幕上,这样能大大加快绘图的速度.双缓冲实现过程如下: 1.在内存中创建与画布一致的缓冲区 BufferBmp=new Graphics::TBitmap(); BufferBmp->Canvas->Handle=CreateCompatibleDC(Ca