Форум: "KOL";
Текущий архив: 2007.05.20;
Скачать: [xml.tar.bz2];
ВнизKolPng Найти похожие ветки
← →
Redline (2006-09-29 18:48) [0]Здравствуйте. Использую TPngObject. Открываю через него файл и рисую на PaintBox. Но не знаю как сделать его прозрачным!
← →
Vladimir Kladov (2006-09-29 19:11) [1]У него же есть DrawTransparent. Или вы в исходник не заглядывали?
← →
Redline (2006-09-29 19:25) [2]Это не то. Мне нужна полупрозрачность, так чтобы и картинку было видно и то что за ней. А за ней находится другой paintbox.
← →
Vladimir Kladov (2006-09-29 19:30) [3]А при чем тут png. Вам тогда надо или SetLayer... или отдельную форму с Alpha задействовать.
← →
Redline (2006-09-29 19:43) [4]Просто переделываю прогу из vcl. Там я сделал так: взял 2 timage, наложил друг на друга, загрузил png файлы, и все получилось красиво. Попытался сделать также в kol, из под одного объекта другого не видно. Вот и ищу решение.
← →
[e]Bu$ter © (2006-10-01 12:10) [5]Извините, что немного не в тему, но вопрос кажется похожий.
Если через DC рисовать на форме с помощью DrawTransparent полупрозрачной картинкой (по краям, она как бы растворяется) при transperent:true у формы, всё смазывается, а при выключеном - прозрачность рисуется нормально, но естествено видно форму.
Т.е. как только появляется окно и происходит первая перерисовка, то всё вроде бы нормально, но когда начинаешь двигать форму по экрану - всё смазывается.
Может кто-то видел? Подскажите пожалуйста где копать?
← →
ANTPro © (2006-10-01 15:24) [6][e]Bu$ter © (01.10.06 12:10) [5]
Может быть это:
http://delphimaster.net/view/11-1158934714/
← →
[e]Bu$ter © (2006-10-02 11:37) [7]
> Может быть это:
> http://delphimaster.net/view/11-1158934714/
Кажется это не то. Вопрос в другом.
В моём случае, совершенно не обязательно делать окно под размер и форму изображения (тем более, что возможна ситауция, когда края изображения ярко не выражены и форма всё-равно будет больше "нормально" видимой части картинки).
Тут, всего-лишь нужно побороть один глюк: кривую перерисовку формы при её движении по экрану или при движении контролов по ней.
Вот два скрина:
После того как появилась форма: http://ebuster.fatal.ru/form_befor_drag.jpg
После того как её подвигали по экрану: http://ebuster.fatal.ru/form_after_drag.jpg
На втором, видно то безобразие которое хочется побороть.
Как я рисую, уже описано выше. Напомню лишь, что если transperent у формы вылкючить (сделать false) то прозрачность у изображения рисуется нормально.
Вот я и думаю, кто виноват в проиллюстрированном глюке: форма (KOL), KolPng, или я?
← →
Barloggg (2006-10-02 12:31) [8]ты.
сделай проще. как в Директ3Д или ДиректДрав.
а именно, заведи итоговую картинку.
и уже ее быстро отрисовывай на всю форму при каждой перерисовке формы.
второе.
где у тебя перерисовка?
в onPaint? если нет, тогда не очень хорошо.
такая фигня начинается когда в onPaint нету заливки заднего фона да и отрисовки вообще.
← →
[e]Bu$ter © (2006-10-02 12:46) [9]
> сделай проще. как в Директ3Д или ДиректДрав.
Разьве так будет проще? Я не сталкивался до этого ни с Директ3Д ни с ДиректДрав. Думаешь пора?
> где у тебя перерисовка?
> в onPaint? если нет, тогда не очень хорошо.
Отрисовка идёт именно в onPaint. Вот так:
procedure TefsForm.KOLForm1Paint(Sender: PControl; DC: HDC);
begin
kolpng.DrawTransparent(DC, 0, 0, kolpng.TransparentColor);
end;
> такая фигня начинается когда в onPaint нету заливки заднего фона
Вот! Может в этом проблема? Как организвать заливку заднего фона?
P.S. В разрабатываемой программе очень критична скорость запуска. И хоть я не знаю пока как там работает Direct(Draw\3D), но мне кажется инициалзиация всего этого будет идти дольше чем при использовании KolPng. М?
← →
Sapersky (2006-10-02 19:51) [10]> сделай проще. как в Директ3Д или ДиректДрав.
Разьве так будет проще?
Это в том смысле, что выполнять блендинг лучше не на уровне окон/компонентов, а вручную, битмап1 + битмап2, и потом выводить результат обычным BitBlt/Draw.
Сам по себе алгоритм несложен, есть множество реализаций, правда, для KOL.TBitmap я не видел ни одной. Для VCL.TBitmap должна быть здесь:
http://kladovka.net.ru/download.cgi?id=252
Также есть в составе SpriteUtils:
http://www.miek.narod.ru/spriteutils2.zip
Но вообще самое простое и быстрое - заранее наложить эти две картинки друг на друга в фотошопе :)
Кстати, хочу тоже пожаловаться на KOLPng:
1) Зачем грузить альфа-канал в какую-то отдельную область памяти, если он прекрасно умещается в 4-й байт 32-битного цвета.
2) Загрузка из файла (декодирование) - медленно! IrfanView грузит png раза в 2 быстрее. Основной (хотя, возможно, и не единственный) тормоз - т.н. фильтры, особенно PAETH. Попробовал оптимизировать - выжал процентов 15. Всё равно медленно...
В процессе расковыривания кода фильтров выяснилось, что в KOL.pas зачем-то реализована функция Abs. Допустим, что это очень качественная сверхоптимизированная реализация - но стандартная Abs инлайнится и потому заведомо быстрее.
← →
alex3 (2006-10-02 20:14) [11]>1) Зачем грузить альфа-канал в какую-то отдельную область памяти
1)Так устроен формат Png.
2)Для возможности манипуляций с альфа-каналом, к примеру, изменять
прозрачность отдельных участков. Возможно так же массштабирование.
← →
Vladimir Kladov (2006-10-02 21:53) [12]
{$IFDEF REDEFINE_ABS}
function Abs( X: Integer ): Integer;
{* absolute value }
{$ENDIF}
т.е. только если вам самим это зачем-то нужно, и вы объявили REDEFINE_ABS.
Медленно? Сделайте быстрее, положите свой вариант. Еще есть Gdi+, KOLGraphics.
← →
Sapersky (2006-10-03 13:57) [13]т.е. только если вам самим это зачем-то нужно, и вы объявили REDEFINE_ABS.
О, пардон. Использую старую версию KOL, когда новую смотрел - REDEFINE_ABS не заметил.
2)Для возможности манипуляций с альфа-каналом, к примеру, изменять
прозрачность отдельных участков. Возможно так же массштабирование.
Но обычно требуется только альфа-блендинг, большинство реализаций которого подразумевают что альфа-канал находится там же, где и r,g,b.
Ну ладно, я понял - "вам это надо, вы и переделывайте" :)
← →
alex3 (2006-10-03 21:56) [14]PNG формат- портативная сетевая графика, был разработан для сетевого применения, основная фича состоит в методе появления изображения на
странице, при загрузке изображения. Его преимущество состоит в том, что
вы можете увидеть содержание картинки, в грубом виде, еще до полной загрузки. Вот по этому он состоит из так называемых кусков. Если кому интересно, можете прочитать в хелпе на сайте разработчиков PNG.
Я применял масштабирование PNG для небольшой анимации.
Вообще был бы интересен графический формат с анимацией и альфа каналом! Аля GIF & PNG.
Страницы: 1 вся ветка
Форум: "KOL";
Текущий архив: 2007.05.20;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.042 c