Masm32 рисование через Bitmap - Assembler
Формулировка задачи:
В тематической ветке с прошлого года никакого движения, попробую здесь.
День добрый, пытаюсь вне WM_PAINT через Bitmap красный Rectangle нарисовать, а выходит один Малевич, макрос RGB работает нормально, т.к. напрямую в hDC нормально рисует , полдня уж голову ломаю что не так.
Заранее спасибо.
Picture proc LOCAL hBmp:HBITMAP LOCAL hOld:HBITMAP LOCAL hDCBmp:HDC LOCAL memDC:HDC LOCAL bRed: HBRUSH invoke GetDC, hWnd mov hDC, eax invoke CreateCompatibleBitmap, hDC, 100, 100 mov hBmp, eax invoke GetDC,hBmp mov hDCBmp, eax RGB 255,0,0 invoke CreateSolidBrush, eax mov bRed, eax invoke SelectObject, hDCBmp, bRed invoke Rectangle, hDCBmp, 0, 0, 100, 100 invoke DeleteObject, bRed invoke CreateCompatibleDC, hDC mov memDC, eax invoke SelectObject, memDC, hBmp mov hOld, eax invoke BitBlt, hDC, 0, 0, 100, 100, memDC, 0, 0, SRCCOPY invoke SelectObject,hDC, hOld invoke ReleaseDC, hWnd, hDC invoke DeleteObject, hBmp invoke DeleteDC, hDCBmp invoke DeleteDC, memDC ret Picture endp
Решение задачи: «Masm32 рисование через Bitmap»
textual
Листинг программы
RGB 255,0,0 invoke CreateSolidBrush, eax mov bRed, eax invoke CreateCompatibleDC, hDC mov memDC, eax invoke SelectObject, memDC, hBmp mov hOld, eax invoke SelectObject, memDC, bRed invoke Rectangle,memDC, 0, 0, 100, 100 invoke DeleteObject, bRed
Объяснение кода листинга программы
В данном коде происходит рисование прямоугольника через Bitmap, используя совместимый DC (Device Context).
- Сначала переменной RGB присваивается значение 255,0,0 (красный цвет).
- Затем происходит создание кисти (brush) с помощью функции CreateSolidBrush, и её дескриптор сохраняется в переменную bRed.
- После этого создается совместимый DC с помощью функции CreateCompatibleDC, и его дескриптор сохраняется в переменную memDC.
- Далее происходит выбор объекта (Bitmap) в DC с помощью функции SelectObject, и его дескриптор сохраняется в переменную hOld.
- Затем происходит выбор кисти (bRed) в DC с помощью функции SelectObject.
- Последним действием происходит рисование прямоугольника с помощью функции Rectangle, где первый аргумент — DC, а остальные четыре аргумента — координаты прямоугольника (0,0,100,100).
- В конце код удаляет объект (brush) bRed с помощью функции DeleteObject.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д