Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.11.07;
Скачать: CL | DM;

Вниз

Создание программной маски?   Найти похожие ветки 

 
Proger   (2004-06-30 11:41) [0]

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


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

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


 
Delirium ©   (2004-06-30 12:43) [2]

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


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

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


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

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

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


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

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


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

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


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

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

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-07-01 13:28) [8]

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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

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

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

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



Страницы: 1 вся ветка

Текущий архив: 2004.11.07;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.05 c
3-1097306996
Алексей
2004-10-09 11:29
2004.11.07
Удаление записи


9-1089764101
Xerx
2004-07-14 04:15
2004.11.07
GLScene


10-1057319481
Bor
2003-07-04 15:51
2004.11.07
При вызове orb->resolve_initial_references возникает искл.


1-1098806958
Bogdan
2004-10-26 20:09
2004.11.07
Rave компоненты


1-1098700751
Strimer
2004-10-25 14:39
2004.11.07
Использование Project2 в Project1