2 qyykf2017 qyykf2017 于 2016.05.02 16:38 提问

GDI绘图 双缓冲贴图 电脑死机

绘图的时候使用了双缓冲贴图 然后自己定义了一个透明贴图的函数DrawTransBitmap,贴图成功了,但是程序一运行内存就飞速增长。不关的话马上就死机了,小白一枚 求各位大神帮忙 万分感激


2个回答

qyykf2017
qyykf2017   2016.05.02 16:41
            case WM_PAINT:
                hdc = GetDC(hwnd);
                mdc = CreateCompatibleDC(hdc);
                bufdc = CreateCompatibleDC(hdc);
                bufdc2 = CreateCompatibleDC(hdc);
                GetClientRect(hwnd,&rect);
                GetObject(hbm1,sizeof(BITMAP),&bm);
                xlength = rect.right - rect.left;
                ylength = rect.bottom - rect.top;


                SelectObject(bufdc,hbm1);
                hbm3 = CreateCompatibleBitmap(hdc,xlength,ylength);
                SelectObject(mdc,hbm3);
                BitBlt(mdc,0,0,2*bm.bmHeight,2*bm.bmWidth,bufdc,0,0,SRCCOPY);


                SelectObject(bufdc2,hbm2);
                GetObject(hbm2,sizeof(BITMAP),&bm);
                DrawTransBitmap(mdc,300,500,0.125*bm.bmWidth,0.125*bm.bmHeight,bufdc2,300,0,RGB(255,255,255));



                BitBlt(hdc,0,0,2*bm.bmHeight,2*bm.bmWidth,mdc,0,0,SRCCOPY);
                DeleteDC(hdc);
                DeleteDC(mdc);
                DeleteDC(bufdc);    
                break;

这个是代码

CSDNXIAOD
CSDNXIAOD   2016.05.02 16:41

GDI双缓冲绘图
GDI双缓冲绘图
GDI双缓冲绘图
----------------------biu~biu~biu~~~在下问答机器人小D,这是我依靠自己的聪明才智给出的答案,如果不正确,你来咬我啊!

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
MFC笔记:GDI+贴图、双缓冲绘图、向屏幕上输出文字
CImage类是一个非常有用的类,利用它可以非常简单地shixian
<Win32_19>用双缓冲技术实现真正的平滑
今年暑假自学了Win32 SDK , 从初学到现在,还是颇有收获。不过既然学了,就得学有所用。 我们都知道IT行业中有两大方向:软件和游戏(其实网络是嵌入在二者之中的)。 之前写了一个集音乐、视频播放于一身的简易播放器——说白了就是一个小软件。那么下一步,就是写一个游戏——纯Win32 C语言,不适用任何游戏引擎——打飞机游戏。   虽然游戏还在创作中(今天才开始,目前我正在努力codin
C#中使用双缓冲以及BitBlt提高GDI+绘图效率的示例程序
利用GDI+在Form中绘制60*60个圆点,显示帧速,使用三种不同方法,分别是: 1.直接绘制 2.使用双缓冲 3.使用BitBlt函数 对比三种函数的帧速,以及提速效果 开发环境为vs2008
GDI双缓冲绘图 GDI绘图
GDI+双缓冲绘图是非常简单的,但是用GDI绘图,就麻烦一些; 但是GDI绘图有一定的优势:速度更快一些;而且适应范围更宽,最近发现用GDI+绘图,在有些win7系统上无法绘制,当然有可能是各类盗版系统引起的,但是没有更好的办法,这里用GDI双缓冲绘图就可以了; 示例如下,根据需要修改应用: 这个示例汇中,主要说明的GDI的双缓冲绘图,也说明了,GDI和GDI+的混合绘图; voi
<Win32 API> GDI和GDI+ 双缓冲模式绘图
使用兼容DC,在DC上创建一个DC进行图形绘制.
GDI+概述及双缓冲绘图技术
1.GDI概述及实例分析 1.1 GDI概述 GDI在全称是Graphics Device Interface,即图形设备接口。是图形显示与实际物理设备之间的桥梁。GDI使得用户无需关心具体设备的细节,而只需在一个虚拟的环境(即逻辑设备)中进行操作。它的桥梁作用体现在: (1)用户通过调用GDI函数将逻辑空间的操作转化为具体针对设备驱动程序的调用。 为实现图
VC双缓冲绘图技术介绍
VC双缓冲绘图技术介绍     双缓冲绘图,它是一种基本的图形图像绘图技术。首先,它在内存中创建一个与屏幕绘图区域一致的对象,然后将图形绘制到内存中的这个对象上,最后把这个对象上的图形数据一次性地拷贝并显示到屏幕上。这种技术能够大大地提高绘图的速度,减少卡顿和闪屏的问题。 我们为什么要使用双缓冲技术来进行绘图?     在应用程序开发中,当图像信息数据量很大时,绘图可能需要几秒钟甚至更长的时间
双缓冲技术(基于GDI+实现)
一、双缓冲技术      双缓冲即在内存中创建一个与屏幕绘图区域一致的对象,先将图形绘制到内存中的这个对象上,再一次性将这个对象上的图形拷贝到屏幕上,这样能大大加快绘图的速度。     当数据量很大时,绘图可能需要几秒钟甚至更长的时间,而且有时还会出现闪烁现象,为了解决这些问题,可采用双缓冲技术来绘图。     双缓冲实现过程如下: 1、在内存中创建与画布一致的缓冲区 2、在缓冲区画
Windows GDI画图闪烁解决方法 双缓冲技术
注:Windows GDI画图闪烁解决方法 一般的windows 复杂的界面需要使用多层窗口而且要用贴图来美化,所以不可避免在窗口移动或者改变大小的时候出现闪烁。 先来谈谈闪烁产生的原因 原因一: 如果熟悉显卡原理的话,调用GDI函数向屏幕输出的时候并不是立刻就显示在屏幕 上只是写到了显存里,而显卡每隔一段时间把显存的内容输出到屏幕上,这就是刷新周期。 一般显卡的刷新周期是 1/8
MFC中的GDI/GDI+和双缓冲绘图
1、GDI概述   GDI在全称是Graphics Device Interface,即图形设备接口。是图形显示与实际物理设备之间的桥梁。         GDI使得用户无需关心具体设备的细节,而只需在一个虚拟的环境(即逻辑设备)中进行操作。它的桥梁作用体现在:      (1)用户通过调用GDI函数将逻辑空间的操作转化为具体针对设备驱动程序的调用。      为实现图形设