Я хочу создать функцию посева в существующем двигателе. Это то, что у меня уже есть:Функция кадрирования BitBlt (...)
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 является HBITMAP класса Bitmap.
Результатом этого кода является только черный экран.
Хм, не работает. Я думаю, что это имеет какое-то отношение к моему созданию HDC. – Kazoeja
Создание DC выглядит хорошо для меня. Вы должны проверить возвращаемые значения всего, особенно 'SelectObject'. –
Что должно быть «hNew»? – Acidic