Как рисовать на растровое изображение - PullRequest
0 голосов
/ 01 октября 2011

Прежде всего: я новичок в GDI, поэтому, пожалуйста, извините меня (и дайте мне знать), если я ошибаюсь.

Что я пытаюсь сделать: Я пытаюсь перевести мой код WM_PAINT в растровое изображение вместо экрана с помощью BeginPaint (). Я также хотел бы отображать растровое изображение на экране, а также отображать поверх него другие данные (которые не сохраняются в растровом изображении).

Может ли кто-нибудь сказать мне, какие функции и типы данных win32 необходимы для этого? Спасибо

1 Ответ

1 голос
/ 01 октября 2011

Прежде всего, чтобы рисовать где-то, кроме вашего окна, вам понадобится новый DC. Вы можете использовать HDC memDC = CreateCompatibleDC([your window hdc]); для его создания.

Теперь вам понадобится растровое изображение для рисования. Используйте HBITMAP memBitmap = CreateCompatibleBitmap ([your window hdc],[your window width],[your window height]); (при условии, что вы хотите один и тот же размер, если это не так, StretchBlt должен сделать трюк), чтобы создать это.

Обратите внимание, что когда вы закончите использовать их, вам потребуется DeleteObject (memBitmap); и DeleteDC (memDC); для очистки.

После создания выберите растровое изображение на вашем экране DC через SelectObject (memDC, memBitmap);

Теперь сделайте весь свой рисунок на memDC. Когда закончите, используйте функцию BitBlt() с источником hdc в качестве memDC и местом назначения hdc в качестве DC вашего окна. Не забудьте удалить то, что вы создали.

...