删除文章

确定要删除这篇文章吗?

取消
确定

GDIPLUS环境初始化以及与GDI结合实现双缓冲

     阅读(1193)  2017-04-15 04:09:29

gdiplus环境的初始化,在头文件

#include <gdiplus.h>
using namespace Gdiplus;
#pragma comment(lib, "gdiplus.lib")

定义两个成员变量

GdiplusStartupInput gdiplusStartupInput;
ULONG_PTR    gdiplusToken;

构造函数里

GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);

析构函数里

GdiplusShutdown(gdiplusToken);

实现代码

        ///////////////////Gdiplus与Gdi混合实现双缓冲////////////////////
        HDC hMemDC = CreateCompatibleDC(m_hDC);
        HBITMAP hMemBitmap = CreateCompatibleBitmap(m_hDC, DEFAULT_STATUS_WIDTH, DEFAULT_STATUS_HEIGHT);
        SelectObject(hMemDC, hMemBitmap);
        Graphics *memGraphics = new Graphics(hMemDC);
        Pen pen(Color(192, 192, 192));
        SolidBrush brush(Color(255, 255, 255));
        memGraphics->FillRectangle(&brush, xPos, yPos, DEFAULT_STATUS_WIDTH, DEFAULT_STATUS_HEIGHT);
        memGraphics->DrawRectangle(&pen, xPos, yPos, DEFAULT_STATUS_WIDTH, DEFAULT_STATUS_HEIGHT);
        for (int i = 0; i < SMALL_IMAGE_COUNT; i++)
        {
            DrawImageFromId(memGraphics, imgID[i], imgXPos[i], imgYPos[i]);
        }
        DeleteObject(hMemBitmap);
        BitBlt(m_hDC, xPos, yPos, DEFAULT_STATUS_WIDTH, DEFAULT_STATUS_HEIGHT, hMemDC, 0, 0, SRCCOPY);
        DeleteDC(hMemDC);
        delete memGraphics;

迁移2011-05-08

文章评论

Keep it simple,stupid
文章数
339
今日访问
790
今日IP数
463
最近评论

liangzi: 不错 谢谢分享
tujiaw: registerThreadInactive:如果当前没有激活的线程,就去激活线程,让等待的线程去执行任务。
hgzzx: 佩服佩服。 请教:registerThreadInactive的作用是什么?
xuehaoyun: 很不错,来围观一下
tujiaw: 抱歉csdn code服务关闭了,这个代码我也找不到了
于淞: 你好,这个文章的源码能分享一下吗,songsong9181@163.com,谢谢了 上面的写错了
回到顶部