无法解决 win32 中 BitBlt 的问题

问题描述 投票:0回答:0

我是 Windows 编程新手,一直受困于软件的遗留代码,很难找出原因。目前的问题是我有一个 SourceHDC,我将其转储到 ScreenDC(HWND) 和内存 DC 上。 screenDC 的行为很奇怪,当应用程序将我的 SourceHDC 发送为黑色(我转储它)时,它不会在 ScreenDC 上传输任何黑色的东西,但是在我的 memoryDC 上我得到黑色矩形。

传递的BitBlt操作是SRC_COPY

这可能是什么原因?如何进一步调试。请指教。这可能是因为阿尔法。如果是的话,我如何确保在我的内存中进行 alpha 复制 DC?

编辑

//mHDC is ScreenDC

//create compatible DC from mDC
HBITMAP SCREENBITMAP = CreateCompatibleBitmap(mHDC, ScreenWidth, ScreenHeight);
HDC SCREEN = CreateCompatibleDC(mHDC);
SelectObject(SCREEN, SCREENBITMAP);

//Blitting back to back and then dumping
BitBlt(mHDC, realDstRect.left, realDstRect.top, dstWidth, dstHeight, srcDC, realSrcRect.left, realSrcRect.top, SRCCOPY);
BitBlt(SCREEN, realDstRect.left, realDstRect.top, dstWidth, dstHeight, srcDC, realSrcRect.left, realSrcRect.top, SRCCOPY);

附件是转储。我注意到一个问题,第一张图像(SrcDC)在我的屏幕上显示为黑色,而这里显示为白色

SrcDC

ScreenDC

内存DC

c++ winapi gdi hwnd hbitmap
© www.soinside.com 2019 - 2024. All rights reserved.