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

         阅读(688)  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
文章数
284
总访问量
263305
今日访问
218
最近评论

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