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