forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Библиотеки (http://forum.boolean.name/forumdisplay.php?f=124)
-   -   Lib_alpha: Прозрачность картинок (http://forum.boolean.name/showthread.php?t=6058)

Cliffe Snake 23.10.2008 00:38

Ответ: Lib_alpha: Прозрачность картинок
 
Odd, добавь пожалуйста в свою либу функции(ю) изменения уровней R,G,B каналов, очень надо=)

odd 24.10.2008 06:44

Ответ: Lib_alpha: Прозрачность картинок
 
Цитата:

Сообщение от Cliffe Snake (Сообщение 89278)
Odd, добавь пожалуйста в свою либу функции(ю) изменения уровней R,G,B каналов, очень надо=)

В смысле? Например, добавить в картинку больше зеленого или красного на выбор? Так? Ты хочешь чтобы при убийстве героя экран как бы постепенно краснел? Я правильно понял?

Cliffe Snake 24.10.2008 16:41

Ответ: Lib_alpha: Прозрачность картинок
 
Можно и такой вариант, если не трудно.
А я имел ввиду что-то вроде этого:
Код:

....
newimg:=alpha.red(img, -20); {уменьшить уровень красного в картинке на 20}
либо такой вариант(наверно получше):
newimg:=alpha.blue(img, 255); {установить уровень синего в 255}
....


odd 25.10.2008 06:30

Ответ: Lib_alpha: Прозрачность картинок
 
Ладно, я попробую такое написать. Но можно обойтись и без всего этого.
Просто, допустим, тебе надо чтобы экран постепенно покраснел.
Делаешь снимок экрана и в цикле генерируешь красный прямоугольник размером с экран. Причем у этого крассного прямоугольника цвет должен быть как и обычно FF0000, а вот прозрачность постепенно будет меняться от 0 до FF (шаг подберешь сам). Теперь просто выводишь свой снимок, а поверху его выводишь сгененрированный прямоугольник. Всё просто. Ах да. За генерирование прямоугольника отвечает функция CreateCursor из либы Menu32. Если у тебя есть главное меню в программе, то эту либу и не надо добавлять.

Phantom 25.10.2008 09:27

Ответ: Lib_alpha: Прозрачность картинок
 
Я рассказывал, как мой сименс забавно реагирует на полупрозрачность? =)

Cliffe Snake 11.12.2008 10:10

Ответ: Lib_alpha: Прозрачность картинок
 
Срочно нужна функция обратная Alpha.TranslateColor(a,r,g,b).
Или расскажите как из ARGB-формата вытащить R, G и B.
Вот примеры основных цветов:
BLACK=-16777216;
MAGENTA=-65281;
BLUE=-16776961;
RED=-65536;
GREEN=-16711936;
Я хз чё с ними делать.

odd 11.12.2008 22:16

Ответ: Lib_alpha: Прозрачность картинок
 
Цитата:

Сообщение от Cliffe Snake (Сообщение 92008)
Срочно нужна функция обратная Alpha.TranslateColor(a,r,g,b).
Или расскажите как из ARGB-формата вытащить R, G и B.
Вот примеры основных цветов:
BLACK=-16777216;
MAGENTA=-65281;
BLUE=-16776961;
RED=-65536;
GREEN=-16711936;
Я хз чё с ними делать.

Открой виндовый калькулятор и переведи все эти числа в HEX. Дальше, я думаю будет понятно. Получится, что каждые 2 буквы будут отвечать за определенный цвет, к примеру: FFAABBCC - FF - прозрачность (255), AA - красный компонент (170), BB - зеленый компонент (187), СС - синий (204). Всё просто. Первые символы FFFF FFFF игнорируешь.

Cliffe Snake 12.12.2008 07:00

Ответ: Lib_alpha: Прозрачность картинок
 
разобралси: Чтобы перевести ARGB в RGB надо прибавить к нему 16777216, а потом уж вытигивать цвета div'ом и mod'ом.
Это будет работать для непрозрачных цветов, с полупрозрачными может быть и нет.
Кому надо, вот соответствующие функции на MP:
PHP код:

Function blue(color:integer):integer;
Begin
color
:=color+16777216;
blue:=color mod 256;
end;

Function 
green(color:integer):integer;
Begin
color
:=color+16777216;
color:=color div 256
green:=color mod 256
end;

Function 
red(color:integer):integer;
Begin
color
:=color+16777216;
color:=color div 65536;
red:=color mod 256
end


odd 14.12.2008 22:49

Ответ: Lib_alpha: Прозрачность картинок
 
А ещё легче это делать с помощью библиотеки Lib_bits. Тогда весь код в одну строчку уместится. Что-то типа такого:
PHP код:

blue:=scroll_right(color AND 255);
...
green:=scroll_right(color AND 65280);
...
red:=scroll_right(color AND 16711680); 


CRASHER 20.08.2010 14:42

Ответ: Lib_alpha: Прозрачность картинок
 
Мне бы такая либа на блитзе не помешалаб. Ни кто мне с этим не сможет помоч?)

ViNT 20.08.2010 16:00

Ответ: Lib_alpha: Прозрачность картинок
 
Цитата:

Сообщение от CRASHER (Сообщение 159076)
Мне бы такая либа на блитзе не помешалаб. Ни кто мне с этим не сможет помоч?)

По блитзу лучше у блитзеров спрашивать :) А вообще, суть состоит в изменении значения байта прозрачности в ARGB значении цвета.

CRASHER 20.08.2010 19:49

Ответ: Lib_alpha: Прозрачность картинок
 
Цитата:

Сообщение от ViNT (Сообщение 159095)
По блитзу лучше у блитзеров спрашивать :) А вообще, суть состоит в изменении значения байта прозрачности в ARGB значении цвета.

А у тебя нет исходника хотябы накаком нибудь языке?)

ViNT 21.08.2010 04:26

Ответ: Lib_alpha: Прозрачность картинок
 
Цитата:

Сообщение от CRASHER (Сообщение 159158)
А у тебя нет исходника хотябы накаком нибудь языке?)

По идее, как-то так:
PHP код:

var
 
t:Integer;//Значение прозрачности
 
C:Integer;//Цвет в формате RGBA

begin
 t
:=t shl 24//Сдвиг на 3 байта (24 бита) влево
 
C:=and $FFFFFF xor t//$FFFFFF=16777215 
end

И так каждый пиксел.
Код на паскале, думаю по комментариям понятно.

А вообще, неужели в блитзе нет подобной функции?

CRASHER 21.08.2010 15:21

Ответ: Lib_alpha: Прозрачность картинок
 
Код:

А вообще, неужели в блитзе нет подобной функции?
Что то подобное я встречал, но там только определенный цвет берется, а не массив цветов.

Rameron 13.11.2010 01:07

Ответ: Lib_alpha: Прозрачность картинок
 
А можно в данной библиотеке реализовать, что-бы можно было указывать чувствительность ReplaceColor? А то данная функция очень полезна для смены, к примеру, фонов изображения, но заменяет только конкретный цвет, что при замене оставляет не закрашенные пиксели другого оттенка, но того же цвета, что негативно влияет на однородность закраски.:)


Часовой пояс GMT +4, время: 10:24.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot