wr_vu
Интересующийся
Offline
|
|
« : 30-09-2010 08:02 » |
|
Имеется задний фон Мне нужно нарисовать на доске фигуру по ее образу без квадрата заливки, по маске на белом фоне, которая также имееться Подскажите пожалуйста, какие API -функции я должен изпользовать что бы выглядело не так: , а вот так: программирую на Ассемблер. С уважением Юрий.
|
|
|
Записан
|
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #1 : 30-09-2010 08:09 » |
|
|
|
« Последнее редактирование: 30-09-2010 08:13 от Алексей1153++ »
|
Записан
|
|
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #3 : 30-09-2010 08:32 » |
|
покажи код, как вызывал
|
|
|
Записан
|
|
|
|
wr_vu
Интересующийся
Offline
|
|
« Ответ #4 : 30-09-2010 08:45 » |
|
@call LoadBitmapA,hInst,FIGURA mov hBmp,eax @call SelectObject,hDCbmp,eax mov hSelect,eax @call BitBlt,hPaint,23,23,80,80,hDCbmp,BitX,BitY,SRCCOPY @call SelectObject,hDCbmp,hSelect @call DeleteObject,hBmp
|
|
|
Записан
|
|
|
|
Sla
|
|
« Ответ #5 : 30-09-2010 08:50 » |
|
ну все правильно функция работает
надо иметь внешний цвет отличающийся от внутренних хотя бы на один бит, и менять его на бекграунд
|
|
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
wr_vu
Интересующийся
Offline
|
|
« Ответ #6 : 30-09-2010 08:52 » |
|
@call BeginPaint,hWnd,offset pPaint mov hPaint,eax
@call CreateCompatibleDC,hPaint mov hDCbmp,eax @call LoadBitmapA,hInst,CHESS0 - загружаю БМП доски mov hBmp,eax @call SelectObject,hDCbmp,eax - выделяю объект mov hSelect,eax @call BitBlt,hPaint,0,0,708,708,hDCbmp,BitX,BitY,SRCCOPY - рисую доску @call SelectObject,hDCbmp,hSelect @call DeleteObject,hBmp - удаляю объект доски
@call LoadBitmapA,hInst,FIGURA - загружаю БМП фигуры mov hBmp,eax @call SelectObject,hDCbmp,eax - выделяю объект mov hSelect,eax @call BitBlt,hPaint,23,23,80,80,hDCbmp,BitX,BitY,SRCCOPY - рисую фигуру @call SelectObject,hDCbmp,hSelect @call DeleteObject,hBmp - удаляю объект @call EndPaint,hWnd,offset pPaint
|
|
|
Записан
|
|
|
|
|
|
wr_vu
Интересующийся
Offline
|
|
« Ответ #9 : 30-09-2010 09:11 » |
|
Возможно я долен использовать функцию "MaskBlt" я пробовал, но не имею понятия как указать маску...
|
|
|
Записан
|
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #10 : 30-09-2010 09:20 » |
|
флаг SRCCOPY выбран неверно. Нужно:
1) сначала очистить место под фигуру (маска + SRCAND) 2) потом положить фигуру (фигура + SRCPAINT)
не отлаживал )
загружать в память каждый раз фигуру - тоже некузяво, загрузи при инициализации, а выгружай при завершении программы
|
|
« Последнее редактирование: 30-09-2010 09:23 от Алексей1153++ »
|
Записан
|
|
|
|
wr_vu
Интересующийся
Offline
|
|
« Ответ #11 : 30-09-2010 09:38 » |
|
Не получаеться так как надо, но если сделать вот так: @call BitBlt,hPaint,23,23,80,80,hDCbmp,BitX,160,SRCAND @call BitBlt,hPaint,23,23,80,80,hDCbmp,BitX,BitY,MERGEPAINT то получаеться вот что: только нужно цвета наоборот поменять, тоесть обводка черная, заливка белая. А оно на оборот получилось.
|
|
|
Записан
|
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #12 : 30-09-2010 09:47 » |
|
потому что
MERGEPAINT Merges the colors of the inverted source rectangle with the colors of the destination rectangle by using the Boolean OR operator. всё же SRCPAINT больше подходит. Странно, что не получается
кстати,
//в hDCbmp- маска @call BitBlt,hPaint,23,23,80,80,hDCbmp,0,maskY,SRCAND
//в hDCbmp- фигура @call BitBlt,hPaint,23,23,80,80,hDCbmp,0,figrY,SRCPAINT
ты в таком порядке делал ?
|
|
|
Записан
|
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #13 : 30-09-2010 09:50 » |
|
всё, до меня дошло )) вокруг фигуры должно быть не белое, а чёрное. Тогда SRCPAINT - как раз
|
|
« Последнее редактирование: 30-09-2010 09:52 от Алексей1153++ »
|
Записан
|
|
|
|
Джон
просто
Администратор
Online
Пол:
|
|
« Ответ #14 : 30-09-2010 09:52 » |
|
Лёш, если мне не изменяет память, я где-то про ROP коды уже чего-то писАл. Не помнишь где?
|
|
|
Записан
|
Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома. "Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash "Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman "All science is either physics or stamp collecting." Ernest Rutherford "Wer will, findet Wege, wer nicht will, findet Gründe."
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #15 : 30-09-2010 09:55 » |
|
|
|
|
Записан
|
|
|
|
wr_vu
Интересующийся
Offline
|
|
« Ответ #16 : 30-09-2010 10:47 » |
|
//в hDCbmp- маска @call BitBlt,hPaint,23,23,80,80,hDCbmp,0,maskY,SRCAND
//в hDCbmp- фигура @call BitBlt,hPaint,23,23,80,80,hDCbmp,0,figrY,SRCPAINT
делал в таком порядке...
Сейчас попробую последний вариант...
|
|
|
Записан
|
|
|
|
|
Джон
просто
Администратор
Online
Пол:
|
|
« Ответ #18 : 30-09-2010 12:14 » |
|
О! Так вот же ROP-код для маски - 0x00B8074A. Чего вы там ещё ищите?
|
|
|
Записан
|
Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома. "Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash "Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman "All science is either physics or stamp collecting." Ernest Rutherford "Wer will, findet Wege, wer nicht will, findet Gründe."
|
|
|
|
Джон
просто
Администратор
Online
Пол:
|
|
« Ответ #20 : 30-09-2010 15:39 » |
|
wr_vu, в #15 Лёшка привёл ссылку. Почитай, как эти ROP коды получаются. Там же и примеры есть. Правда на С++. Но я думаю ты разберёшься. В конечном итоге SRCPAINT, SRCAND и пр. ничто иное как эти самые коды и есть. Может сам сделаешь такой, как тебе нужен.
|
|
« Последнее редактирование: 06-10-2010 07:14 от Джон »
|
Записан
|
Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома. "Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash "Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman "All science is either physics or stamp collecting." Ernest Rutherford "Wer will, findet Wege, wer nicht will, findet Gründe."
|
|
|
|