2

在我的 j2me 应用程序中,我尝试了在诺基亚手机上运行良好但不能在三星上运行的画布。为此,我必须切换到在两种情况下都有效但唯一的问题是尺寸的某种形式,如果我创建较小的图像以适合两个手机屏幕,一个(三星)显示还可以,但另一个(诺基亚)留下更多空间反之亦然。

我需要有可以拉伸我的图像的代码,并且只需将其修复为我基本上得到的屏幕尺寸form.getHeight()form.getWidth()属性。我想知道是否有属性,Image.createImage(width, height)那么为什么不将其扩展到我提供的值?

我的代码如下

try {
        System.out.println("Height: " + displayForm.getHeight());
        System.out.println("Width: " + displayForm.getWidth());
        Image img1 = Image.createImage("/bur/splashScreen1.PNG");
        img1.createImage(displayForm.getHeight(), displayForm.getWidth()); 
        displayForm.append(new ImageItem(null, img1, Item.LAYOUT_CENTER, null));
    } catch (Exception ex) {
    }

图片在此处输入图像描述

4

2 回答 2

3

单个图像不会适合所有屏幕。但更多会做。
较小的徽标图像应小于 96x54,因为这是最小的屏幕分辨率。此图像可以毫无问题地使用到 128x128 的分辨率。不过,使用更大的分辨率,它看起来会很小。
较大的徽标图像应该比 128x128 大一点,并且可以使用到 240x320。下面的代码举例说明了如何实现这一点。

import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.Graphics;

class Splash extends javax.microedition.lcdui.Canvas {

  Image logo;

  Splash () {
    if (getWidth() <= 128) {
      // sl stands for Small Logo and does not need to have a file extension
      // this will use less space on the jar file
      logo = Image.createImage("/sl");
    } else {
      // bl stands for Big Logo
      logo = Image.createImage("/bl");
    }
  }

  protected void paint (Graphics g) {
    // With these anchors your logo image will be drawn on the center of the screen.
    g.drawImage(logo, getWidth()/2, getHeight()/2, Graphics.HCENTER | Graphics.VCENTER);
  }
}

http://smallandadaptive.blogspot.com.br/2008/10/showing-splash.html所示

于 2012-12-04T20:05:37.623 回答
0

想知道是否有属性,Image.createImage(width, height)那么为什么不将其扩展到我提供的值?

此方法中的参数与拉伸无关,请参阅API javadocs

 public static Image createImage(int width, int height)

    Creates a new, mutable image for off-screen drawing.
        Every pixel within the newly created image is white.
        The width and height of the image must both be greater than zero.

    Parameters:
        width - the width of the new image, in pixels
        height - the height of the new image, in pixels

Image类(API javadocs)还有两个createImage使用参数的方法,称为“width”和“height”——一个有六个,另一个有四个参数,但这些都与拉伸无关。

  • 在使用六个参数时,宽度和高度指定要从源图像createImage复制(不拉伸)的区域的大小。

  • 在具有四个参数的方法中,宽度和高度指定如何解释源 ARGB 数组,如果没有这些参数,就无法确定12值数组是否代表3x4图像或4x3. 同样,这与拉伸无关。

于 2012-12-05T08:45:22.717 回答