GDI+ PNG图片 双缓冲&半透明图片绘图发黑解决

本文介绍了如何使用GDI+进行双缓冲显示PNG图片以防止闪烁,并解决半透明图片绘图时出现的发黑问题。通过创建内存DC,将图片绘制在内存中,然后使用BitBlt复制到物理DC,有效避免了颜色叠加导致的图像变黑。同时提出了在显示PNG图片前先绘制背景,以保持图像透明度的策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

双缓冲显示PNG图片

双缓冲显示图片。。。其实就将图片预先存储在内存DC里,显示的时候直接映射到物理设备DC上,这样子能够快速显示图片,避免闪烁的现象。因此分成两步,创建内存DC中图像和 将内存DC图像复制到物理DC上。


核心是在内存DC中显示图片。

1.      首先要开辟出来一块内存以作DC用。
CDC MemDC;

2.      给内存DC赋以一定的物理属性。不同于物理DC,内存DC只是一块内存,没的物理属性,无法知道将要显示图片的设备信息。可通过以下语句给内存DC赋上物理属性:
MemDC.CreateCompatibleDC(&pDC);

3.      现在已经有了内存DC的基本物理信息了,好比知道了图纸的大小等基本属性,但是还没有图纸,现在创建图纸:

bmp.CreateCompatibleBitmap(&clDC,rect.Width(), rect.Height());

并通知内存DC使用这张图纸

MemDC.SelectObject(&bmp);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值