Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Media";
Текущий архив: 2011.12.04;
Скачать: [xml.tar.bz2];

Вниз

Рисовать на 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 вся ветка

Форум: "Media";
Текущий архив: 2011.12.04;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.004 c
8-1220951683
Konung
2008-09-09 13:14
2011.12.04
Рисовать на pf32bit битмапе


2-1313585266
Antoxa
2011-08-17 16:47
2011.12.04
Load/Save ListView


2-1313476457
Cobalt
2011-08-16 10:34
2011.12.04
Left side cannot be assigned to (D2007)


15-1313053263
Псарь
2011-08-11 13:01
2011.12.04
Где взять Twitter API для Delphi?


8-1220146711
Agent[007]
2008-08-31 05:38
2011.12.04
max to 3ds





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский