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

How to create memory DC with 24 bits per pixel?

本文关键字:24位 像素 内存 DC 何创建 创建      更新时间:2023-10-16

我需要它使用GDI函数与RGB24数据一起工作(特别是StretchBlt(),这是非常快的),我不能使用CreateCompatibleDC(),因为它只能用其他DC的颜色深度创建内存DC。通常它与屏幕DC(通过传递NULL指针到函数)一起使用,通常屏幕的颜色深度值为32。此外,我不能依赖它,因为如果屏幕设置改变了,我的应用程序可能无法工作。

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

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

注:我需要它来处理一些快速的图像。我试过手动添加alpha通道到位图,使用它兼容屏幕32bpp内存DC,它成功了,但太慢了。正如我上面所说的,我不能依赖于可以改变的屏幕设置。

bit -per-pixel实际上并不取决于DC,而是取决于所选择的位图。用CreateDIBSection创建一个24bpp的位图,然后将其选择到内存DC中。