Показать сообщение отдельно
Старый 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)