VC++6.0的gdi+示例Demo(VC6+GdiPlus)

先直接上效果图:

gdi+
分别加载显示了 jpg、png、gif动画的第一帧静态显示、gif动画的真实延迟还原显示播放、渐变透明画刷、渐变色画刷

其中较难的是:gif动画的真实延迟还原显示播放,其每帧间隔的延迟如下图:
gif帧延迟

代码重点

gdi+ 开发包

gdi+开发包

关键代码
#define ULONG_PTR ULONG
//ULONG_PTR gdiToken; //全局变量,或类成员变量
#include <windows.h>
#include "Includes\\GdiPlus.h"
using namespace Gdiplus;
#pragma comment(lib, "Lib\\GdiPlus.lib")
    GdiplusStartupInput gdiplusStartupInput;
    GdiplusStartup(&gdiToken, &gdiplusStartupInput, NULL);
		// ====== 双缓冲核心代码 ======
		// 1. 创建内存DC
		CDC memDC;
		memDC.CreateCompatibleDC(&dc);

		// 2. 创建和窗口客户区一样大的位图
		CRect rect;
		GetClientRect(&rect);
		CBitmap memBitmap;
		memBitmap.CreateCompatibleBitmap(&dc, rect.Width(), rect.Height());

		// 3. 选入内存DC
		CBitmap* pOldBitmap = memDC.SelectObject(&memBitmap);

		// 4. 填充背景,防止残影
		memDC.FillSolidRect(rect, RGB(255,255,255)); // 白色背景,可按需调整

		// 5. 用GDI+在内存DC上绘图
		Graphics graphics(memDC.GetSafeHdc());
		// jpg
		Image image(L"test.jpg");
		graphics.DrawImage(&image, 10, 10);
		// png
		Image image2(L"test.png");
		graphics.DrawImage(&image2, 150, 10);
		// gif
		Image image3(L"test.gif");
		graphics.DrawImage(&image3, 10, 150);

		if (m_pGifImage)
		{
			graphics.DrawImage(m_pGifImage, 50, 150);
		}
		

		//CGDITESTDoc* pDoc = GetDocument();
		//ASSERT_VALID(pDoc);
		//Graphics graphics( pDC->m_hDC );
		GraphicsPath path; // 构造一个路径
		path.AddEllipse(50, 50, 200, 100);
		// 使用路径构造一个画刷
		PathGradientBrush pthGrBrush(&path);
		// 将路径中心颜色设为蓝色
		pthGrBrush.SetCenterColor(Color(255, 0, 0, 255));
		// 设置路径周围的颜色为蓝芭,但alpha值为0
		Color colors[] = {Color(0, 0, 0, 255)};
		INT count = 1;
		pthGrBrush.SetSurroundColors(colors, &count);
		graphics.FillRectangle(&pthGrBrush, 50, 50, 200, 100);
		LinearGradientBrush linGrBrush(
			Point(300, 50),
			Point(500, 150),
			Color(255, 255, 0, 0), // 红色
			Color(255, 0, 0, 255)); // 蓝色
		graphics.FillRectangle(&linGrBrush, 300, 50, 200, 100);

		// 6. 最后一次性将内存DC的内容拷贝到屏幕DC,防止闪烁
		dc.BitBlt(0, 0, rect.Width(), rect.Height(), &memDC, 0, 0, SRCCOPY);

		// 7. 清理
		memDC.SelectObject(pOldBitmap);
GdiplusShutdown(gdiToken);

完整代码

https://download.csdn.net/download/maoyeahcom/90949082

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值