读书人

创建32bit的内存DC解决思路

发布时间: 2012-03-18 13:55:39 作者: rapoo

创建32bit的内存DC
这是技术比较高难度的一个代码了,一般普通用户很难遇到.
可是偏偏让我给碰上了,霉气呀..........

如果你屏幕设置成16位的,那他创建的就是16位的DC
我是想在16位的模式下,创建一个32位的DC
看代码吧...

memdc=CreateCompatibleDC(NULL);//创建一个与当前显示器兼容的内存DC
// // HDC pingdc=GetDC(NULL);//创建与屏幕兼容的DC
HDC pingdc=CreateDC("DISPLAY", NULL, NULL, NULL);
bmp=CreateCompatibleBitmap(pingdc,245,234); //根据 屏幕兼容的DC 创建指定大小的图片
//内存DC 的大小正好跟,加载的流图片大小一样
SelectObject(memdc,bmp); //将图片选入内存DC,,此时,内存DC,就

就这个问题,你们遇到过吗,我是基本上崩溃了,如果你能帮我,我50分作为回报,没那么多分,最多只能给这些了,在谢了

[解决办法]
创建32位的DC是为了处理图片么?我原来也碰到过类似问题。屏幕是16位的,然后要处理的图片是RGBA通道32位的,这时用CreateCompatibleDC是不行的。
但是如果从Bitmap开始得到hDC的话,就得一步步的转换好多个句柄

其实GDI的API主要是为了显示而不是处理,所以处处都是Compatible而不是任意。
如果要处理图片,最好用其他的函数库,而不是WinAPI。我当时就改用了OpenCV。或者直接像素操作也可以。

读书人网 >C++

热点推荐