删除文章

确定要删除这篇文章吗?

取消
确定

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

     阅读(783)  2017-04-15 12: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
文章数
292
总访问量
350377
今日访问
391
最近评论

xuehaoyun : 很不错,来围观一下
tujiaw : 抱歉csdn code服务关闭了,这个代码我也找不到了
于淞 : 你好,这个文章的源码能分享一下吗,songsong9181@163.com,谢谢了 上面的写错了
于淞 : 你好,这个文章的源码能分享一下吗,838106303@163.com,谢谢了 上面的链接不能用了
tujiaw : 多谢多谢
essaypinglun college-paper.org : 很好的博客,赞赞
Folly : 这个实现有点奇怪,Qt为什么没有统一的比对方法。
过多s : alert("hello, world!")
tujiaw : 还不错哦
回到顶部