Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для мобильных телефонов > MidletPascal > Библиотеки

Ответ
 
Опции темы
Старый 04.07.2008, 08:34   #16
odd
Мастер
 
Аватар для odd
 
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений
(для 713 пользователей)
Ответ: Lib_alpha: Прозрачность картинок

Добавил ещё функцию SetTransparentColor.
Скажем, у вас есть картинка im с белым фоном. Делаем:

SetTransparentColor(255, 255, 255);
im = SetOpaque(im, 255);


И получим ту же картинку, но уже с прозрачным фоном.
То же касается и полупрозрачных картинок.
Если раскинуть мозгами, можно теперь делать довольно интересные графические эффекты в играх.
Вложения
Тип файла: zip Lib_alpha.zip (1.4 Кб, 634 просмотров)
(Offline)
 
Ответить с цитированием
Эти 5 пользователя(ей) сказали Спасибо odd за это полезное сообщение:
Ghost_Russia (04.07.2008), GOODBYTE (04.07.2008), im_zorg (03.02.2010), Mark Castle (09.11.2009), Snake89 (29.12.2008)
Старый 04.07.2008, 15:13   #17
GOODBYTE
AnyKey`щик
 
Аватар для GOODBYTE
 
Регистрация: 21.06.2008
Адрес: Нижегородская обл.
Сообщений: 17
Написано одно полезное сообщение
Ответ: Lib_alpha: Прозрачность картинок

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

Не подскажешь, в чём ошибка?

program hello;

uses alpha;

var 	load_image : image;
			im_h, im_w, h, w, ph, pw, i : integer;

begin
	
	load_image := loadImage('/media.png');
	
	h  := getHeight;
	w := getWidth;
	im_w := getImageWidth(load_image);
	im_h := getImageHeight(load_image);
	
	(* вычиселение новых координат :) *)
	
	ph := h / 2;
	pw := (w / 2) - (im_w / 2);
	
	for i := 1 to alpha.GetAlphaLevels do

		begin
			
			setColor(0, 0, 0);
			FillRect(0, 0, w, h);
						
			alpha.SetTransparentColor(255,255,255); 
			load_image := alpha.SetOpaque(load_image,alpha.GetAlphaLevels);
			
			DrawImage(load_image, pw, ph);
			
			repaint;
			delay(2);
		
		end;
set_color(255,255,255);
		drawText('Hello world!', 0, 0);
		repaint;	
		delay(2000);
end.
__________________
..глаза боятся, руки делают..
http://forum.boolean.name/image.php?type=sigpic&userid=2535&dateline=1215022  556
(Offline)
 
Ответить с цитированием
Старый 04.07.2008, 15:29   #18
ViNT
Модератор
 
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений
(для 817 пользователей)
Ответ: Lib_alpha: Прозрачность картинок

Ну так 255 это же полная прозрачность?
Вот и получается, что каждый раз в цикле изображению ставится полная прозрачность и его не видно. К тому же я сомневаюсь, что белый пиксель с наложенной альфой будет соответствовать чисто белому пикселю.
(Offline)
 
Ответить с цитированием
Старый 04.07.2008, 15:32   #19
GOODBYTE
AnyKey`щик
 
Аватар для GOODBYTE
 
Регистрация: 21.06.2008
Адрес: Нижегородская обл.
Сообщений: 17
Написано одно полезное сообщение
Ответ: Lib_alpha: Прозрачность картинок

ViNT, ну если тогда подумать то оно бы должно было медленно переходить из обычной картинки в прозрачную. Но этого почему то не происходит, хотя я там задержку же поставил...
попробую еще похимичить
__________________
..глаза боятся, руки делают..
http://forum.boolean.name/image.php?type=sigpic&userid=2535&dateline=1215022  556
(Offline)
 
Ответить с цитированием
Старый 04.07.2008, 15:37   #20
ViNT
Модератор
 
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений
(для 817 пользователей)
Ответ: Lib_alpha: Прозрачность картинок

Где ж оно будет переходить если написано:
load_image := alpha.SetOpaque(load_image,alpha.GetAlphaLevels);?
Во-первых, нужно поставить i вместо выделенного, во-вторых, картинку каждый раз нужно грузить снова, т.к. он уже после первой обработки не содержит ни одного белого пиксела.

Тогда уж так:
uses alpha;

var 	load_image,im : image;
			im_h, im_w, h, w, ph, pw, i : integer;

begin
	
	load_image := loadImage('/img.png');
	
	h  := getHeight;
	w := getWidth;
	im_w := getImageWidth(load_image);
	im_h := getImageHeight(load_image);
	
	(* вычиселение новых координат :) *)
	
	ph := h / 2;
	pw := (w / 2) - (im_w / 2);

	alpha.SetTransparentColor(255,255,255);
	setColor(0, 0, 0);
	for i := alpha.GetAlphaLevels downto 0 do
	begin
	 FillRect(0, 0, w, h);
   im := alpha.SetOpaque(load_image,I);
	 DrawImage(im, pw, ph);
   repaint;
	 delay(10);
	end;
	
setcolor(255,255,255);
		drawText('Hello world!', 0, 0);
		repaint;	
		delay(2000);
end.

Последний раз редактировалось ViNT, 04.07.2008 в 15:47.
(Offline)
 
Ответить с цитированием
Старый 04.07.2008, 18:17   #21
GOODBYTE
AnyKey`щик
 
Аватар для GOODBYTE
 
Регистрация: 21.06.2008
Адрес: Нижегородская обл.
Сообщений: 17
Написано одно полезное сообщение
Ответ: Lib_alpha: Прозрачность картинок

уф, логику нарушил. спс )
__________________
..глаза боятся, руки делают..
http://forum.boolean.name/image.php?type=sigpic&userid=2535&dateline=1215022  556
(Offline)
 
Ответить с цитированием
Старый 04.07.2008, 23:37   #22
InkutaY
Оператор ЭВМ
 
Аватар для InkutaY
 
Регистрация: 13.06.2008
Адрес: Сочи
Сообщений: 43
Написано 6 полезных сообщений
(для 12 пользователей)
Ответ: Lib_alpha: Прозрачность картинок

А можно в стелать процедуру в библиотеку, что бы она меняла в картинке определенный цвет на другой?
(Offline)
 
Ответить с цитированием
Старый 05.07.2008, 03:29   #23
odd
Мастер
 
Аватар для odd
 
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений
(для 713 пользователей)
Ответ: Lib_alpha: Прозрачность картинок

Сообщение от InkutaY Посмотреть сообщение
А можно в стелать процедуру в библиотеку, что бы она меняла в картинке определенный цвет на другой?
Да легко. Скоро будет. Ждите.

Кстати, для новичков: GetAlphaLevels по-идее возвращает 256 в то время как максимальная принимаемая функцией SetOpaque прозрачность равна 255. Намёк ясен?

Кстати, в функции SetTransparentColor порядок цветов нарушен. Надо RGB, а там BGR какой-то получился. Пофиксю одновременно с выходом функции замены одного цвета на другой.
(Offline)
 
Ответить с цитированием
Старый 05.07.2008, 03:32   #24
InkutaY
Оператор ЭВМ
 
Аватар для InkutaY
 
Регистрация: 13.06.2008
Адрес: Сочи
Сообщений: 43
Написано 6 полезных сообщений
(для 12 пользователей)
Ответ: Lib_alpha: Прозрачность картинок

Класно!, буду ждать спс
(Offline)
 
Ответить с цитированием
Старый 05.07.2008, 14:46   #25
ViNT
Модератор
 
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений
(для 817 пользователей)
Ответ: Lib_alpha: Прозрачность картинок

odd, советую в новой версии сделать возможность задания прозрачного/заменяемого цвета в формате ARGB, а не RGB, и функцию для определения цвета указанного пикселя в ARGB формате.
(Offline)
 
Ответить с цитированием
Старый 06.07.2008, 03:34   #26
odd
Мастер
 
Аватар для odd
 
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений
(для 713 пользователей)
Ответ: Lib_alpha: Прозрачность картинок

Сообщение от ViNT Посмотреть сообщение
odd, советую в новой версии сделать возможность задания прозрачного/заменяемого цвета в формате ARGB, а не RGB, и функцию для определения цвета указанного пикселя в ARGB формате.
Хорошо, добавлю. А пока держите RGB версию. Добавлена функция замены цвета ReplaceColor.
Вложения
Тип файла: zip Lib_alpha.zip (2.5 Кб, 609 просмотров)
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
InkutaY (06.07.2008)
Старый 08.07.2008, 08:41   #27
odd
Мастер
 
Аватар для odd
 
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений
(для 713 пользователей)
Ответ: Lib_alpha: Прозрачность картинок

Как и обещал, всё сделал. Держите.

Пример выполнения:
Program AlphaTest;
Uses	alpha;
Var	im: image;
Begin
	im:=LoadImage('/world.png'); // Загружаем картинку
	DrawImage(im, 5, 5); // Рисуем её
	im:=SetOpaque(im, 127); // Ставим общую прозрачность картинки на 50%
	im:=ReplaceColor(im, GetColor(im, 0, 0), 0); // Заменяем цвет фона на прозрачный
	DrawImage(im, 25, 25); // Рисуем вторую картинку чуть ниже для сравнения
	Repaint; Delay(10000);
End.
Добавлена функция GetColor(image im, int x, int y) которая возвращает цвет пиксела в картинке с выбранными координатами в ARGB формате.
Вложения
Тип файла: zip Lib_alpha.zip (1.5 Кб, 637 просмотров)
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Bruteo (02.11.2009)
Старый 14.07.2008, 23:19   #28
beisik
Нуждающийся
 
Аватар для beisik
 
Регистрация: 23.04.2008
Адрес: Брест, Беларусь
Сообщений: 53
Написано 10 полезных сообщений
(для 18 пользователей)
Ответ: Lib_alpha: Прозрачность картинок

Отличная библиотека, но бесит тот факт, что если в картинке уже есть прозрачность, то SetOpaque ее полностью убирает ):
(Offline)
 
Ответить с цитированием
Старый 15.07.2008, 07:58   #29
odd
Мастер
 
Аватар для odd
 
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений
(для 713 пользователей)
Ответ: Lib_alpha: Прозрачность картинок

Сообщение от beisik Посмотреть сообщение
Отличная библиотека, но бесит тот факт, что если в картинке уже есть прозрачность, то SetOpaque ее полностью убирает ):
Меня лично ничего не бесит. Просто потом делаешь ReplaceColor на полностью прозрачный и всё.
(Offline)
 
Ответить с цитированием
Старый 22.09.2008, 07:17   #30
Cliffe Snake
Нуждающийся
 
Аватар для Cliffe Snake
 
Регистрация: 22.09.2008
Сообщений: 74
Написано 8 полезных сообщений
(для 12 пользователей)
Ответ: Lib_alpha: Прозрачность картинок

Ещё неплохо бы задавать прозрачность в функциях в процентах(0-100), а не числом(0-255). Хотя в принципе и так сойдет, спасиб за библу =)
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
прозрачность в OpenGL XenuS C++ 8 09.11.2007 01:13
Альфа(Прозрачность) Atomikc 2D-программирование 15 16.04.2007 18:35
Прозрачность Valet Создание текстур 12 13.02.2007 00:44
Прозрачность _maxim_ 3D-программирование 5 21.11.2006 20:51
Прозрачность в Blitz SubZer0 Библиотеки 2 04.10.2005 00:48


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com