![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Создание программной маски? [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, установить необходимый тебе размер и закрасить пиксели нужными цветами...
Ты бы поподробнее спросил, глядиш и желающих тебе помочь будет больше.