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

Вниз

Рисовать на pf32bit битмапе   Найти похожие ветки 

 
Konung ©   (2008-09-09 13:14) [0]

Вопрос в следующем:

рисуя что то вроде

bt.Canvas.Brush.Color:=$02800000;
bt.Canvas.Brush.Style:=bsSolid;
bt.Canvas.FillRect(rect(x,y,x+p,y+p));

на 32 битном битмапе, получается, что рисую как то странно с прозрачностью. (пробовал и разные варианты цветов, штатные и заданные вручную.)
адекватного варианта так и не получил. а хотелось бы самому задать и цвет и прозрачность. быть может есть какой нюанс?

заранее благодарен за ответ


 
MBo ©   (2008-09-09 14:12) [1]

>адекватного варианта так и не получил
А что хотелось получить?


 
Konung ©   (2008-09-09 14:18) [2]

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


 
antonn ©   (2008-09-09 14:22) [3]

не понял, проблема в байте альфаканала или в отображении такого битмапа при выводе? не нужен альфаканал - сделать просто $800000.


 
MBo ©   (2008-09-09 14:23) [4]

А как видно, что он полупрозрачный?


 
Konung ©   (2008-09-09 14:34) [5]

гм...

2 antonn

не... не прет

условно говоря. в битмап 32битный загоняется полупрозрачная PNG-шка. котрая потом используется для отрисовки эдакой скинованой формы (через UpdateLayeredWindow)

на сем окошке контролы ессо не видны, и для тех или иных нужд - чего то надо нарисовать. и собственно при попытке отрисовки на сем битмапе, для последующей перерисовки окна - зарисовка того же квадратика происходит полупрозрачно. собственно упорно не могу добиться непрозрачной отрисовки. и в итоге получается эдакая "почти дырка" которая лишь оттеняет те цвета что под ней. прикольно конечно, но не совсем то ;)

(могу привести и код и исходники предоставить ежели интересно)


 
antonn ©   (2008-09-09 16:29) [6]

понял. Короче дырки рисует :)
вроде gdi не рисует в четвертом байте, а обнуляет его. но если чесно - не пробывал задавать именно такой цвет :)
посутпал более "деревянно" - для вывода текста (canvas.textout()) сохранял в два битмапа "лицевую" сторону и альфу, рисовал на первой и второй (на маске просто белым цветом). потом обратно собирал и выводил.


 
Konung ©   (2008-09-09 18:06) [7]

2 antonn [6]

гмм... не фонтанно будет, боюсь... увеличится скорость отрисовки из-за постоянного складывания... возможно тормозить будет... для сплаш-а не сильно то и критично, но... попробую... сенкс...

(ЗЫ... вот перемудрили борландовцы с альфой... однозначно... :( )


 
antonn ©   (2008-09-09 18:10) [8]

там картинки 1600*1200 чтоли? :)
я игры через ГДИ писал, с альфой, а уж для сплеша тем более не так уж и тормозно будет :)


 
Konung ©   (2008-09-10 10:40) [9]

2 antonn

да нет... маленькое сплешко :). но ка кто идея не нравится.
в принципе обощелся советом комрада Torbins с сайта DelphiKingdom: полечилось через скан лайн. и ваабще - через оный (скан лайн) переделал ряд вещей раз уж "пробегаюсь" по картинке. пока никакого сложного текста особо не выводится - так вполне устраивает.

однако же - сенкс за ответы


 
antonn ©   (2008-09-10 12:39) [10]

ну тык я  имел ввиду сканлайн, и собирать можно через него, операция сбора действительно быстрая получается, а имея маску отдельно можно довольно дешево вытворять эффекты типа fade, или управлять прозрачностью относительно фона элементов на лицевом битмапе.



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

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

Наверх




Память: 0.49 MB
Время: 0.01 c
2-1313260811
Александр160591
2011-08-13 22:40
2011.12.04
добавление иконкиico в проект


2-1313155354
qow
2011-08-12 17:22
2011.12.04
работа с формой


1-1260565061
Gero
2009-12-11 23:57
2011.12.04
Отловить вызов XMLHttpRequest


2-1313438873
анонимус
2011-08-16 00:07
2011.12.04
std::sort на делфи


4-1252505872
Игорь
2009-09-09 18:17
2011.12.04
SYSTEM_HANDLE_INFORMATION