Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Создание программной маски? [Delphi, Windows]


Proger ©   (2004-06-30 11:41:00) 

Какие есть способы создания прог. маски?


Огромное Кулясищще   (2004-07-03 13:57:00) [1]

Слухай, мне это уже начинает надоедать. Какие-то озарения, переделки. Ты можешь сделать то, что тебе надо - создать маску и вывести спрайт? Если да, то остальные вопросы ни к чему. Откуда я знаю, что ты там творишь и какие функции используешь?

В этой статье
http://delphigfx.mastak.ru/2d/001/2d_1.htm

непрозрачная область на маске обозначена чёрным. Я же привык наоборот, потому что grayscale маска в альфа-канале 32-битного битмапа обозначена по-другому. Ну и пофиг, надо просто поэксперементировать, как будет если так, а как если по-другому.

Каким образом можно сделать блендинг при помощи BitBlt - для меня остаётся загадкой, но думается, что невозможно.


Proger   (2004-07-03 12:46:00) [2]

2 Огромное Кулясищще ©.Опять ты ошибаешься.Попробовал сделал
прозрачный цвет спрайта красным, соответствующая область в
маске чёрная, дык у меня спрайт спрайт выводится с красной
областью, только полупрозрачной ИМХО Blending.


Огромное Кулясищще   (2004-07-02 22:21:00) [3]

Да, правильно понял.


Proger   (2004-07-02 22:06:00) [4]

Огромное Кулясищще ©.Насчет монохромности масок я знаю.Короче я
так понял что прозрачный цвет спрайта может быть любой цвет, а
соответствующая область в маске всегда должна быть чёрной?


Огромное Кулясищще   (2004-07-02 22:02:00) [5]

Делая через BitBlt ты создаёшь монохромную маску, поэтому маска получается чёрно-белой. Прозрачный же цвет спрайта может быть и не белым (см. как он задаётся в примерах).


Proger   (2004-07-02 21:17:00) [6]

Ещё один вопросик появился: Почему когда выводится спрайт
прозрачная область спрайта должна быть белой, а соответствующая
облать в маске чёрного цвета?Пробовал наоборот, но спрайт
выводится с прозрачной областью.Как быть если в спрайте(помимо
прозрачной области) имеется белый цвет?


Proger   (2004-07-01 14:45:00) [7]

2 Огромное Кулясищще ©.Спасибо за советы, попрубую ScanLine'ом.


ПсихЪ_клон   (2004-07-01 13:28:00) [8]

Если масок не много, то проще создать маски вручную и заранее... Иначе, делать всё без масок.


Огромное Кулясищще   (2004-06-30 23:47:00) [9]

Про маски и прозрачный вывод:

http://msdn.microsoft.com/archive/default.asp?url=/archive/en-us/dnargdi/html/msdn_transblt.asp

P.S.: BitBlt работает по-пиксельно (или лучше - по битам), просто очень хорошо оптимизирована ( http://dic.h11.ru/index.php?art=b2507про bit-block trasfer). Примерно той же скорости можно добиться при создании маски путём быстрого доступа к пикселам (scanline, а лучше другие средства).


Огромное Кулясищще   (2004-06-30 23:21:00) [10]

Понятно. Такая же функция есть в модуле Graphic (TransparentStretchBlt). Используй TBitmap.Mask или см. исходники CopyBitmapAsMask.


Proger   (2004-06-30 22:05:00) [11]

2 Огромное Кулясищще ©.Ошибаешься, в докозательство зайди хотябы
на DelphiGFX, там есть библ MediaLib 1.9.В ней есть процедурка,
которая одними БитБлитами создаёт маску.Но она не просто создаёт
маску, а теми же BitBlt выводит её на DestBitmap.Короче пробовал
выдирать оттуда исходники, но нечего не получилось.


Огромное Кулясищще   (2004-06-30 20:40:00) [12]

> P.S Попиксельно ScanLine'ом непредлагать

Другого способа, кроме как попиксельно, НЕТ. Так или иначе, будет попиксельно.


Proger   (2004-06-30 19:37:00) [13]

2 ПсихЪ_клон.Правильно понимаешь.
 P.S Попиксельно ScanLine'ом непредлагать


Delirium   (2004-06-30 12:43:00) [14]

http://www.delphimaster.ru/nuts/nuts.html


ПсихЪ_клон   (2004-06-30 12:07:00) [15]

Программной маски чего? Карновального костюма? (: Я так понимаю, что тебе нужно просто создать TBitmap, установить необходимый тебе размер и закрасить пиксели нужными цветами...
Ты бы поподробнее спросил, глядиш и желающих тебе помочь будет больше.


Наверх

Титульная страница Поиск, карта сайта Написать письмо