如何创建每像素24位的内存DC?

时间:2011-09-30 09:32:51

标签: c++ winapi gdi device-context

我需要它使用GDI函数处理RGB24数据(特别是StretchBlt()非常快)我不能使用CreateCompatibleDC(),因为它只能用其他DC的颜色深度创建内存DC。通常它用于屏幕DC(通过传输NULL指针到功能),通常屏幕的颜色深度为32。此外我不能依赖它,'因为如果屏幕设置被更改,我的应用程序可能无法正常工作。 / p>

所以我需要一些方法来创建具有特定特定颜色深度的内存DC。到目前为止,我发现使用CreateDC()函数只有一种方法,但它需要许多特定于设备的参数,对我来说似乎有点不可靠。此外,有太多的字段需要填充适当的值来调用CreateDC()。

是否有一些更简单的方法来创建特定的内存DC而不依赖某些设备?或者即使用24 bpp创建内存DC?

P.S。我需要一些快速的图形。我已经尝试手动将alpha通道添加到位图以使用它兼容屏幕32bpp内存DC并且它已经解决了,但是太慢了。正如我上面所说,我不能依赖可以更改的屏幕设置。

1 个答案:

答案 0 :(得分:5)

每像素位实际上并不依赖于DC,而是依赖于选择它的位图。使用CreateDIBSection创建一个24bpp位图,然后将其选择到内存DC中。