Кто-нибудь знает, как отобразить BitmapField? - PullRequest
0 голосов
/ 17 декабря 2010

У меня есть код, который кодирует изображение в растровое изображение.Но я не уверен, как отобразить его на экране.Кстати, я использую Blackberry JavaME.Это код, где я использую для кодирования изображения.Это способ, которым я могу использовать, чтобы получить изображение с SD-карты и отобразить его на экране?

FileConnection conn = 
    (FileConnection)Connector.open("image1.png",Connector.READ_WRITE);
if(conn.exists()) {
    InputStream is = conn.openInputStream();
    BitmapField bitmap = null;
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    int ch;
    while ((ch = is.read()) != -1)
    {
        baos.write(ch);
    }
    byte imageData[] = baos.toByteArray();
    bitmap = new BitmapField(
        EncodedImage.createEncodedImage(imageData, 0, imageData.length).getBitmap());
    add(bitmap);
}

Ответы [ 2 ]

3 голосов
/ 17 декабря 2010

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

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

Это было изменено из HelloWorldDemo, который поставляется с SDK.Я рекомендую, если вы только начинаете, посмотрите на примеры в папке.\ plugins \ net.rim.ejde.componentpack5.0.0_5.0.0.25 \ components \ samples \

удачи

Луч

public class DisplayBitmaps extends UiApplication
{
    public static void main(String[] args)
    {
        DisplayBitmaps theApp = new DisplayBitmaps();       
        theApp.enterEventDispatcher();
    }

    public DisplayBitmaps()
    {        
        pushScreen(new DisplayBitmapsScreen());
    }    
}

final class DisplayBitmapsScreen extends MainScreen
{
    DisplayBitmapsScreen()
    {    
     Bitmap bitmap = EncodedImage.getEncodedImageResource("images/image.png").getBitmap();
     BitmapField bitmapField = new BitmapField(bitmap);
        add(bitmapField);
    }

    public void close()
    {  
        super.close();
    }   
}

Изменить, когдаизображение находится на SD-карте

DisplayBitmapsScreen()
{    
 //Bitmap bitmap = EncodedImage.getEncodedImageResource("images/image.png").getBitmap();
 try {
  FileConnection fc = (FileConnection) Connector.open("file:///SDCard/BlackBerry/pictures/image.png");
  if (fc.exists()) {
   byte[] image = new byte[(int) fc.fileSize()];
   InputStream inStream = fc.openInputStream();
   inStream.read(image);
   inStream.close();
   EncodedImage encodedImage = EncodedImage.createEncodedImage(image, 0, -1);
   BitmapField bitmapField = new BitmapField(encodedImage.getBitmap());
   fc.close();
   add(bitmapField);
  }
 } catch (Exception e) { System.out.println("EXCEPTION " + e); }
}

Переопределение рисования в поле или любом другом классе поля также может отображать изображение, но я не совсем понял из примера Секко, где он будет отображать изображение, поэтому я включил drawImageв этом примере ниже.

protected void paint(Graphics graphics) {
   graphics.drawImage(x, y, width, height, image, frameIndex, left, top);
   super.paint(graphics);
}
0 голосов
/ 17 декабря 2010

Вы можете сделать это с помощью:

paint (Graphics g);

Возможно в функции:

protected void DrawStuff(Graphics g) {              
    this.paint(g);
}
...