【发布时间】:2010-09-08 18:57:09
【问题描述】:
我想在现有引擎中创建裁剪功能。这是我已经拥有的:
bool Bitmap::Crop(RECT cropArea)
{
BITMAP bm;
GetObject(m_Handle, sizeof(bm), &bm);
HDC hSrc = CreateCompatibleDC(NULL);
SelectObject(hSrc, m_Handle);
HDC hNew = CreateCompatibleDC(NULL);
HBITMAP hBmp = CreateCompatibleBitmap(hNew, bm.bmWidth, bm.bmHeight);
HBITMAP hOld = (HBITMAP)SelectObject(hNew, hBmp);
BitBlt(hNew, 0, 0, bm.bmWidth, bm.bmHeight, hSrc, 0, 0, SRCCOPY);
SelectObject(hNew, hOld);
DeleteDC(hSrc);
DeleteDC(hNew);
DeleteObject(m_Handle);
m_Handle = hBmp;
}
我希望它只是将整个图像复制到一个新的 HBITMAP 并用它替换旧的。所以我知道它有效。之后它只是在玩 BitBlt 参数。
m_Handle 是 Bitmap 类的 HBITMAP。
这段代码的结果只是黑屏。
【问题讨论】: