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

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

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

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

Я щас пишу библиотеку поддержки альфа-уровней для картинок.
Для тех кто не понял: по идее можно делать произвольную прозрачность для картинки, скажем 60%. Уже практически всё написано, запнулся только на одной ошибке.
Вот текст моей библиотеки на Java:

import javax.microedition.lcdui.Image;

class Lib_alpha
{
    Lib_alpha()
    {
    }

    public static int getalphalevels()
    {
        return FW.fw.display.numAlphaLevels();
    }
    
    public static Image setopaque(Image im, int op)
    {
        int mask = 0 | op << 64;
        int buff[] = new int[im.getWidth() * im.getHeight()];
        im.getRGB(buff, 0, im.getWidth(), 0, 0, im.getWidth(), im.getHeight());
        int i;
        for (i=0; i < buff.length; i++)
        {
            buff[i] = buff[i] | mask;  // <-- На эту строку и матерится эмулятор хотя NetBeans молчит
        }
        Image im2 = Image.createRGBImage(buff, im.getWidth(), im.getHeight(), true);
        return im2;
    }
}
Компилируется нормально, но при запуске эмулятор MidpX выдаёт что-то типа Error validating class и ругается причем именно на помеченную строку. В чём я не прав?

Текст проверочной программки на MP:

Program AlphaTest;
Uses	alpha;
Var	im: image;
Begin
	im:=LoadImage('/kcalc.png'); // Загрузка картинки
	DrawText('Уровней: '+GetAlphaLevels, 5, 5); // Отображаем количество альфа-уровней (256 по-идее)
	Repaint; Delay(1000); // Отрисовка и пауза 1 сек
	im:=SetOpaque(im, 127); // Выставляем прозрачность 127 из 255  т.е. 50%
	DrawImage(im, 0, 0); // Рисуем картинку
	Repaint; Delay(5000); // Снова отрисовка и пауза 5 сек
End.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
InkutaY (03.07.2008)
Старый 28.06.2008, 22:36   #2
ViNT
Модератор
 
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений
(для 817 пользователей)
Ответ: Lib_alpha: Прозрачность картинок

Не знаю, у меня на SE все работает без ошибок, правда картинка какая-то синюшная получается.
(Offline)
 
Ответить с цитированием
Старый 30.06.2008, 19:46   #3
JIexa
AnyKey`щик
 
Регистрация: 14.06.2008
Сообщений: 13
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Lib_alpha: Прозрачность картинок

odd, а можете этот код сделать в библиотеку? а то компилятора нет. А библиотека такая нужна. Пусть даже если не совсем доработанную.
(Offline)
 
Ответить с цитированием
Старый 30.06.2008, 20:21   #4
ViNT
Модератор
 
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений
(для 817 пользователей)
Ответ: Lib_alpha: Прозрачность картинок

Да похоже она вообще не работает.
Картинка получается такая, как будто изменяется не alpha-канал, а канал синего.
(Offline)
 
Ответить с цитированием
Старый 30.06.2008, 21:56   #5
JIexa
AnyKey`щик
 
Регистрация: 14.06.2008
Сообщений: 13
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Lib_alpha: Прозрачность картинок

ViNT, ну выложи class файл. пожалуйста.
(Offline)
 
Ответить с цитированием
Старый 30.06.2008, 22:42   #6
ViNT
Модератор
 
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений
(для 817 пользователей)
Ответ: Lib_alpha: Прозрачность картинок

Вот, но похоже она делает не то, что нужно.
Вложения
Тип файла: zip Lib_alpha.zip (782 байт, 761 просмотров)
(Offline)
 
Ответить с цитированием
Старый 01.07.2008, 08:30   #7
odd
Мастер
 
Аватар для odd
 
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений
(для 713 пользователей)
Ответ: Lib_alpha: Прозрачность картинок

Что-то не так. У меня на SE K550i вобще не запускается. А в эмуляторе пишет, что ошибка валидации класса. Ещё мозгую над проблемой...
(Offline)
 
Ответить с цитированием
Старый 01.07.2008, 11:42   #8
ViNT
Модератор
 
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений
(для 817 пользователей)
Ответ: Lib_alpha: Прозрачность картинок

А чем компилил?
Я иногда пытался компилить либы напрямую через javac (из wtk), так он мне тоже часто(но, что интересно, не всегда) писал ошибку верификации класса, хотя компиляция проходила нормально. Сейчас компилю через JB, все нормально, только изображение явно получается с измененным каналом синего, как будто не на тот байт маска накладывается.
(Offline)
 
Ответить с цитированием
Старый 01.07.2008, 14:53   #9
JIexa
AnyKey`щик
 
Регистрация: 14.06.2008
Сообщений: 13
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Lib_alpha: Прозрачность картинок

Program AlphaTest;
Uses alpha;
Var im: image;
i:integer;
Begin
im:=LoadImage('/123.png'); // Загрузка картинки
DrawText('Уровней: '+GetAlphaLevels, 5, 5); // Отображаем количество альфа-уровней (256 по-идее)
Repaint; Delay(1000);
setcolor(255,255,255);

for i:=1 to 255 do begin
fillrect(0,0,GetWidth,GetHeight); 
im:=SetOpaque(im, i); 
DrawImage(im, 0, 0);
Repaint; Delay(10); 
End;

end.
А меня вот при таком коде картинка становится все синее и синее. Наоборот наверное не синий изменяется цвет а какой то другой уменьшается. А синий из-за этого выделяется. Хотя я не знаю буду ждать готовую библиотеку. Заранее спасибо
(Offline)
 
Ответить с цитированием
Старый 01.07.2008, 15:17   #10
ViNT
Модератор
 
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений
(для 817 пользователей)
Ответ: Lib_alpha: Прозрачность картинок

Ну так, от 1 до 255 повышаем значение BB байта, получаем все более синюю картинку.
(Offline)
 
Ответить с цитированием
Старый 01.07.2008, 18:51   #11
Piligrim
Оптимист
 
Регистрация: 07.01.2006
Сообщений: 961
Написано 105 полезных сообщений
(для 259 пользователей)
Ответ: Lib_alpha: Прозрачность картинок

формат цветности aarrggbb, т.е. четыре байта. вы сдвигаете на 64 бита - это 8 байт, т.е. получается 2 раза по кругу.
(Offline)
 
Ответить с цитированием
Старый 02.07.2008, 03:11   #12
odd
Мастер
 
Аватар для odd
 
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений
(для 713 пользователей)
Ответ: Lib_alpha: Прозрачность картинок

Я уже сделал по-другому. Ошибки валидации теперь нет.
Правда и прозрачности я тоже не увидел

import javax.microedition.lcdui.Image;

class Lib_alpha
{
    public static int mask;
    
    public static int getalphalevels()
    {
        return FW.fw.display.numAlphaLevels();
    }
    
    public static void setmask(int i)
    {
        switch (i)
        {
            case 0: {mask = 0x00000000; break;}
            case 1: {mask = 0x11000000; break;}
            case 2: {mask = 0x22000000; break;}
            case 3: {mask = 0x33000000; break;}
            case 4: {mask = 0x44000000; break;}
            case 5: {mask = 0x55000000; break;}
            case 6: {mask = 0x66000000; break;}
            case 7: {mask = 0x77000000; break;}
            case 8: {mask = 0x88000000; break;}
            case 9: {mask = 0x99000000; break;}
            case 10: {mask = 0xAA000000; break;}
            case 11: {mask = 0xBB000000; break;}
            case 12: {mask = 0xCC000000; break;}
            case 13: {mask = 0xDD000000; break;}
            case 14: {mask = 0xEE000000; break;}
            case 15: {mask = 0xFF000000; break;}
        }
    }
    
    public static Image opaquepicture(Image im)
    {
        int buff[] = new int[im.getWidth() * im.getHeight()];
        im.getRGB(buff, 0, im.getWidth(), 0, 0, im.getWidth(), im.getHeight());
        for(int i=0; i < buff.length; i++) buff[i] = buff[i] | mask;
        Image im2 = Image.createRGBImage(buff, im.getWidth(), im.getHeight(), true);
        return im2;
    }
}
Проверка проводилась так:

Program AlphaTest;
Uses	alpha;
Var	im: image;
		i: integer;
Begin
	im:=LoadImage('/kcalc.png');
	DrawText('Уровней: '+GetAlphaLevels, 5, 5);
	for i:=0 to 15 do
	begin
		SetColor(255,255,255); FillRect(0,0,200,200); SetColor(0,0,0);
		SetMask(i);
		DrawImage(OpaquePicture(im),5,5);
		DrawImage(OpaquePicture(im),25,25);
		DrawText(''+i,0,0);
		Repaint; Delay(1000);
	end
End.
Вложения
Тип файла: zip Lib_alpha.zip (836 байт, 628 просмотров)
(Offline)
 
Ответить с цитированием
Старый 02.07.2008, 14:43   #13
Piligrim
Оптимист
 
Регистрация: 07.01.2006
Сообщений: 961
Написано 105 полезных сообщений
(для 259 пользователей)
Ответ: Lib_alpha: Прозрачность картинок

Извиняюсь, что вмешиваюсь , но как-то у вас тут все затянулось.
Правда проверял только на Мотороле.
Вложения
Тип файла: zip Lib_alpha.zip (1.2 Кб, 718 просмотров)
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
InkutaY (03.07.2008)
Старый 02.07.2008, 20:58   #14
ViNT
Модератор
 
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений
(для 817 пользователей)
Ответ: Lib_alpha: Прозрачность картинок

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

Гениально. Оказывается нужно было просто добавить маскировку and 0x00FFFFFF.
На SE пашет. Добавил библиотеку в коллекцию.
Спасибо, pilgrim!
(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, время: 10:15.


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