如何创建每像素24位的内存DC
How to create memory DC with 24 bits per pixel?
我需要它使用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中。
相关文章:
- 如何在24位SDL_Surface上设置像素的颜色
- 如何使用 freetype2 访问单色位图中的像素状态
- 将像素打包在盒子中的 1 位/带宽/二进制图像中
- 图像的像素格式始终返回 32 位
- 从位图图像文件读取像素数据值
- 为什么锁定位对所有像素值返回 -842150451
- 如何将图像中的每个像素作为16位索引存储到颜色表中
- 从HWND获取并保存位图(每个像素8,4,1位-黑色图像)
- 在OpenCV中循环通过16位Mat的像素的有效方法
- 像素转换为原始位(比特流)
- 将用于绘制为位图的像素格式更改
- 有没有办法在不复制所有像素的情况下将现有的像素数组转换为位图
- Win32 位图渲染速度如何比像素快
- 如何访问位图中的像素颜色
- 如何在SDL上加载原始像素位图
- 试图逐像素理解位图
- 如何创建每像素24位的内存DC
- 如何在libav中使用PixelFormat获得像素位计数
- 为32位纹理(R11F_G11F_B10F)的每个像素存储3个带符号浮点(从-4到4)
- C++从8位位图构建像素数据,并访问bmiColor表信息