既存のエンジンでクロップ機能を作成したいと考えています。これは私がすでに持っているものです:
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 です。
このコードの結果は、単なる黒い画面です。