我在CE BltBit中遇到了麻烦,从先前创建的兼容hdc到设备的hdc。

以下代码有效:

 hdc = pdis->hDC;
 FillRect(hdc, &(pdis->rcItem), (HBRUSH)GetStockObject(BLACK_BRUSH));
 ImageList_Draw(himl, imageIndex, hdc, 15 , 30, ILD_NORMAL);


但是,以下仅绘制黑色矩形,而不是将图像放在顶部。

        hdc = pdis->hDC;
        hdcmem = CreateCompatibleDC(hdc);
        FillRect(hdc, &(pdis->rcItem), (HBRUSH)GetStockObject(BLACK_BRUSH));
        ImageList_Draw(himl, imageIndex, hdcmem, 0 , 0, ILD_NORMAL);
        BitBlt(hdc, 15, 30, 130, 100, hdcmem, 0, 0, SRCCOPY);


任何想法最欢迎。

最好的祝福
Ë

最佳答案

CreateCompatibleDC不执行您认为的操作。从链接页面:


  在应用程序可以使用存储设备上下文进行绘制操作之前,它必须在设备上下文中选择正确宽度和高度的位图。这可以通过使用CreateCompatibleBitmap指定函数调用中所需的高度,宽度和颜色组织来完成。


设备上下文是一种抽象。它们后面必须有一个存储设备-屏幕或您的位图。

关于c++ - ImageList和BltBit-ting,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1593737/

10-13 07:11