![]() |
|
|
![]()
|
|
| Rapalex |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 732 Регистрация: 20.1.2006 Где: Украина -> Ник олаев Репутация: 6 Всего: 8 |
Системма такая у меня есть главный вю приложения на нём чтото рисуется, и ето чтото можно вращять за нарисованые стрелочки.
Т.к. в настройках вю может изменить цвет и стрелочки могут изменить цвет, я в ресурсах нарисовал монохромную стрелку а перед отрисовкой на экране нулевые писели залил цветом фона а чёрные другим цветом. Рисую BitBlt. И получается не очень красиво, зарисовывается то что должно быть видно. см. рис. - на нём белая линия не должна полностью пропадать. Так как мне сдалать так чтоб белая линия дожла до стрелки? Присоединённый файл ( Кол-во скачиваний: 22 )
Pic.PNG 0,26 Kb-------------------- In vitium ducit culpae fuga. Желание избежать ошибки вовлекает в другую. (Horatius) |
|||
|
||||
| SergeCpp |
|
|||
![]() ![]() ![]() Профиль Группа: Участник Сообщений: 955 Регистрация: 8.8.2005 Где: At Home Репутация: 5 Всего: 124 |
||||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Битблит имеет различные операции. Ты, наверное, просто COPY делаешь. А надо:
1) Очистить маской то место, где должна быть стрелка, не трогая все остальное (1я операция) 2) Положить сверху, уже операцией ИЛИ. Итак, тебе нужно 2 операции битблит: вырезание маской и наложение. И нужны 2 битмапа, причем именно монохромных, т.е. однобитных. Первый - белая (единицы) стрелка, черный (фон), Второй - наоборот. Естественно, второй легко получается из первого. Второй - это и есть маска вырезания, кладешь ее бит-блитом операцией SRCAND. Далее кладешь первый битмап операцией SRCPAINT, но предварительно выставляешь контексту назначения SetTextColor тот цвет, которым должна быть стрелка - это избаляет тебя от перекрашивания битмапа-маски. Можно обойтись бы и одним битмапом, для этого нужна операция, которая называлась бы DSTERASE: т.е. комбинировала бы инвертированные цвета маски с цветами в контексте операцией AND. Самое смешное, что такая операция поддерживается, но ее код нужно "вычислить". Я, к сожалению, уже не помню... Кстати, по ссылке, которую SergeCpp дал, как раз описывается, как вычислить код операции. А еще, с помощью MaskBlt, это вроде можно заменить одной операцией. Это сообщение отредактировал(а) Earnest - 27.7.2006, 17:07 -------------------- ... |
|||
|
||||
| Rapalex |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 732 Регистрация: 20.1.2006 Где: Украина -> Ник олаев Репутация: 6 Всего: 8 |
Сижу делаю, уже задалбался
MaskBlt - вообще не понятно что и как? Если ли классы которые позволяют какойто цвет в изображении как tranparent выбрать? Это сообщение отредактировал(а) Rapalex - 28.7.2006, 16:32 -------------------- In vitium ducit culpae fuga. Желание избежать ошибки вовлекает в другую. (Horatius) |
|||
|
||||
| Rapalex |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 732 Регистрация: 20.1.2006 Где: Украина -> Ник олаев Репутация: 6 Всего: 8 |
Earnest, я так смотрел используя MaskBlt возможно будет такое нарисовать только если во временый буфер скопировать изображение экрана (ну не всё а толькл тот прямоугольник который буду перерисовывать).
А вот с Ternary Raster Operations не всё ясно это значение в какую функцию нужно передавать? Да и как вычеслять чтото не очень понятно, может кто подсказку на русском даст? -------------------- In vitium ducit culpae fuga. Желание избежать ошибки вовлекает в другую. (Horatius) |
|||
|
||||
| Rapalex |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 732 Регистрация: 20.1.2006 Где: Украина -> Ник олаев Репутация: 6 Всего: 8 |
Получилдось ответ 0x00B8074A в BitBlt или PSDPxax, а я и не знал что такое возможно, большое спасибо.
-------------------- In vitium ducit culpae fuga. Желание избежать ошибки вовлекает в другую. (Horatius) |
|||
|
||||
| bilbobagginz |
|
|||
![]() Naughtius Maximus ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8813 Регистрация: 2.3.2004 Где: Israel Репутация: нет Всего: 317 |
тема старая и решенная, но наверное стоит добавить о GDI+
есть такая штука в новых версиях виндовс. она поддерживает Аlpha и т.д., прозрачность и т.п. верхняя иерархия мсдн о GDI+ -------------------- Я ещё не демон. Я только учусь. |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |