Java Tutorial/J2ME/Image
Содержание
Display big Image
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.rumand;
import javax.microedition.lcdui.rumandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
public class DisplayBigImageTest extends MIDlet implements CommandListener {
private Display display;
private TestCanvas tc;
private Command leftCommand = new Command("Left", Command.SCREEN, 1);
private Command rightCommand = new Command("Right", Command.SCREEN, 1);
public DisplayBigImageTest() {
Image img = null;
try {
img = Image.createImage("/10.png");
} catch (Exception e) {
System.out.println(e.getMessage());
}
tc = new TestCanvas(img);
tc.addCommand(rightCommand);
tc.addCommand(leftCommand);
tc.setCommandListener(this);
display = Display.getDisplay(this);
}
public void startApp() throws MIDletStateChangeException {
display.setCurrent(tc);
}
public void pauseApp() {
}
public void destroyApp(boolean unconditional) {
}
public void commandAction(Command c, Displayable d) {
int stepX = tc.getWidth() / 4;
int stepY = tc.getHeight() / 4;
if (d == tc && c == leftCommand) {
tc.increaseXY(stepX, 0);
tc.repaint();
} else if (d == tc && c == rightCommand) {
tc.increaseXY(-stepX, 0);
tc.repaint();
}
}
class TestCanvas extends Canvas {
private Image img;
private int transX = 0;
private int transY = 0;
public TestCanvas(Image img) {
this.img = img;
transX = 0;
transY = 0;
}
public void increaseXY(int x, int y) {
transX += x;
transY += y;
}
public void paint(Graphics g) {
int width = this.getWidth();
int height = this.getHeight();
g.setGrayScale(255);
g.fillRect(0, 0, width - 1, height - 1);
g.setGrayScale(0);
g.drawRect(0, 0, width - 1, height - 1);
g.translate(transX, transY);
g.drawImage(img, 0, 0, g.TOP | g.LEFT);
}
}
}
Draw image
import java.io.IOException;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.midlet.MIDlet;
public class DrawImageGraphicsMIDlet extends MIDlet {
private Display display;
protected void startApp() {
Canvas canvas = new LineCanvas();
display = Display.getDisplay(this);
display.setCurrent(canvas);
}
protected void pauseApp() {
}
protected void destroyApp(boolean unconditional) {
}
}
class LineCanvas extends Canvas {
public void paint(Graphics g) {
int width = getWidth();
int height = getHeight();
try {
Image image = Image.createImage("/h.png");
g.drawImage(image, 0, 0, Graphics.TOP | Graphics.LEFT);
} catch (IOException ex) {
g.setColor(0xffffff);
g.drawString("Failed to load image!", 0, 0, Graphics.TOP | Graphics.LEFT);
return;
}
}
}
Draw image to the bottom and right
import java.io.IOException;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.midlet.MIDlet;
public class ImageBottomRightGraphicsMIDlet extends MIDlet {
private Display display;
protected void startApp() {
Canvas canvas = new LineCanvas();
display = Display.getDisplay(this);
display.setCurrent(canvas);
}
protected void pauseApp() {
}
protected void destroyApp(boolean unconditional) {
}
}
class LineCanvas extends Canvas {
public void paint(Graphics g) {
int width = getWidth();
int height = getHeight();
try {
Image image = Image.createImage("/h.png");
g.drawImage(image, width, height, Graphics.BOTTOM | Graphics.RIGHT);
} catch (IOException ex) {
g.setColor(0xffffff);
g.drawString("Failed to load image!", 0, 0, Graphics.TOP | Graphics.LEFT);
return;
}
}
}
Draw image to the center vertically and horizontally
import java.io.IOException;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.midlet.MIDlet;
public class ImageVerticalHorizontalGraphicsMIDlet extends MIDlet {
private Display display;
protected void startApp() {
Canvas canvas = new LineCanvas();
display = Display.getDisplay(this);
display.setCurrent(canvas);
}
protected void pauseApp() {
}
protected void destroyApp(boolean unconditional) {
}
}
class LineCanvas extends Canvas {
public void paint(Graphics g) {
int width = getWidth();
int height = getHeight();
try {
Image image = Image.createImage("/h.png");
g.drawImage(image, width/2, height/2, Graphics.VCENTER | Graphics.HCENTER);
} catch (IOException ex) {
g.setColor(0xffffff);
g.drawString("Failed to load image!", 0, 0, Graphics.TOP | Graphics.LEFT);
return;
}
}
}
Draw image with rectangle
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.rumand;
import javax.microedition.lcdui.rumandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.midlet.MIDlet;
public class DrawImageMIDlet extends MIDlet implements CommandListener {
private Command exitCommand;
Display display;
Image image = null;
public void startApp() {
Display display = Display.getDisplay(this);
try {
image = Image.createImage("/0.png");
} catch (Exception e) {
}
Displayable d = new DrawImageCanvas(image);
exitCommand = new Command("Exit", Command.EXIT, 1);
d.addCommand(exitCommand);
d.setCommandListener(this);
display.setCurrent(d);
}
public void pauseApp() {
}
public void destroyApp(boolean unconditional) {
}
public void commandAction(Command c, Displayable s) {
notifyDestroyed();
}
}
class DrawImageCanvas extends Canvas {
int width = 0;
int height = 0;
Image image = null;
DrawImageCanvas(Image image) {
this.image = image;
}
public void paint(Graphics g) {
width = getWidth();
height = getHeight();
g.setGrayScale(255);
g.fillRect(0, 0, width - 1, height - 1);
g.setGrayScale(0);
g.drawRect(0, 0, width - 1, height - 1);
g.drawImage(image, width / 2, height / 2, g.HCENTER | g.VCENTER);
}
}
Image loading exception
import javax.microedition.lcdui.Alert;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.rumand;
import javax.microedition.lcdui.rumandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.midlet.MIDlet;
public class J2MEImmutableImageExample extends MIDlet {
private Display display;
private MyCanvas canvas;
public J2MEImmutableImageExample() {
display = Display.getDisplay(this);
canvas = new MyCanvas(this);
}
protected void startApp() {
display.setCurrent(canvas);
}
protected void pauseApp() {
}
protected void destroyApp(boolean unconditional) {
}
public void exitMIDlet() {
destroyApp(true);
notifyDestroyed();
}
class MyCanvas extends Canvas implements CommandListener {
private Command exit;
private J2MEImmutableImageExample immutableImageExample;
private Image image = null;
public MyCanvas(J2MEImmutableImageExample immutableImageExample) {
this.immutableImageExample = immutableImageExample;
exit = new Command("Exit", Command.EXIT, 1);
addCommand(exit);
setCommandListener(this);
try {
image = Image.createImage("/myImage.png");
} catch (Exception error) {
Alert alert = new Alert("Failure", "Can�t open image file.", null, null);
alert.setTimeout(Alert.FOREVER);
display.setCurrent(alert);
}
}
protected void paint(Graphics graphics) {
if (image != null) {
graphics.drawImage(image, 0, 0, Graphics.VCENTER | Graphics.HCENTER);
}
}
public void commandAction(Command command, Displayable display) {
if (command == exit) {
immutableImageExample.exitMIDlet();
}
}
}
}
Immutable image
import javax.microedition.lcdui.Alert;
import javax.microedition.lcdui.AlertType;
import javax.microedition.lcdui.rumand;
import javax.microedition.lcdui.rumandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.ImageItem;
import javax.microedition.midlet.MIDlet;
public class J2MEImmutableImage extends MIDlet implements CommandListener {
private Display display;
private Form form;
private Command exit;
private Image image;
private ImageItem imageItem;
public J2MEImmutableImage() {
display = Display.getDisplay(this);
exit = new Command("Exit", Command.EXIT, 1);
form = new Form("Immutable Image Example");
form.addCommand(exit);
form.setCommandListener(this);
try {
image = Image.createImage("myimage.png");
imageItem = new ImageItem(null, image, ImageItem.LAYOUT_NEWLINE_BEFORE
| ImageItem.LAYOUT_LEFT | ImageItem.LAYOUT_NEWLINE_AFTER, "My Image");
form.append(imageItem);
} catch (java.io.IOException error) {
Alert alert = new Alert("Error", "Cannot load myimage.png.", null, null);
alert.setTimeout(Alert.FOREVER);
alert.setType(AlertType.ERROR);
display.setCurrent(alert);
}
}
public void startApp() {
display.setCurrent(form);
}
public void pauseApp() {
}
public void destroyApp(boolean unconditional) {
}
public void commandAction(Command command, Displayable Displayable) {
if (command == exit) {
destroyApp(false);
notifyDestroyed();
}
}
}
Mutable Image
import javax.microedition.lcdui.Alert;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.rumand;
import javax.microedition.lcdui.rumandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.midlet.MIDlet;
public class J2MEMutableImageExample extends MIDlet {
private Display display;
private MyCanvas canvas;
public J2MEMutableImageExample() {
display = Display.getDisplay(this);
canvas = new MyCanvas(this);
}
protected void startApp() {
display.setCurrent(canvas);
}
protected void pauseApp() {
}
protected void destroyApp(boolean unconditional) {
}
public void exitMIDlet() {
destroyApp(true);
notifyDestroyed();
}
class MyCanvas extends Canvas implements CommandListener {
private Command exit;
private J2MEMutableImageExample mutableImageExample;
private Image image = null;
public MyCanvas(J2MEMutableImageExample mutableImageExample) {
this.mutableImageExample = mutableImageExample;
exit = new Command("Exit", Command.EXIT, 1);
addCommand(exit);
setCommandListener(this);
try {
image = Image.createImage(70, 70);
Graphics graphics = image.getGraphics();
graphics.setColor(255, 0, 0);
graphics.fillArc(10, 10, 60, 50, 180, 180);
} catch (Exception error) {
Alert alert = new Alert("Failure", "Creating Image", null, null);
alert.setTimeout(Alert.FOREVER);
display.setCurrent(alert);
}
}
protected void paint(Graphics graphics) {
if (image != null) {
graphics.setColor(255, 255, 255);
graphics.fillRect(0, 0, getWidth(), getHeight());
graphics.drawImage(image, 30, 30, Graphics.VCENTER | Graphics.HCENTER);
}
}
public void commandAction(Command command, Displayable display) {
if (command == exit) {
mutableImageExample.exitMIDlet();
}
}
}
}