package org.droiddraw.gui; import java.awt.Graphics; import java.awt.Image; import java.awt.image.BufferedImage; public class NineWayImage { BufferedImage[] images; int dx1, dy1, dx2, dy2, wx, wy; public NineWayImage(Image img, int dx, int dy) { this(img, dx, dy, dx, dy); } public NineWayImage(Image img, int dx1, int dy1, int dx2, int dy2) { this.images = new BufferedImage[9]; this.dx1 = dx1; this.dy1 = dy1; this.dx2 = dx2; this.dy2 = dy2; this.wx = img.getWidth(null)-(dx1+dx2); this.wy = img.getHeight(null)-(dy1+dy2); BufferedImage bi = new BufferedImage(img.getWidth(null), img.getHeight(null), BufferedImage.TYPE_4BYTE_ABGR); bi.getGraphics().drawImage(img, 0, 0, null); int w = bi.getWidth(); int h = bi.getHeight(); if (dx1 > 0 && dy1 > 0) images[0] = bi.getSubimage(0, 0, dx1, dy1); if (dy1 > 0) images[1] = bi.getSubimage(dx1, 0, wx, dy1); if (dx2 > 0 && dy1 > 0) images[2] = bi.getSubimage(w-dx2, 0, dx2, dy1); if (dx1 > 0) images[3] = bi.getSubimage(0, dy1, dx1, wy); images[4] = bi.getSubimage(dx1, dy1,wx, wy); if (dx2 > 0) images[5] = bi.getSubimage(w-dx2,dy1,dx2,wy); if (dx1 > 0 && dy2 > 0) images[6] = bi.getSubimage(0,h-dy2,dx1,dy2); if (dy2 > 0) images[7] = bi.getSubimage(dx1,h-dy2,wx,dy2); if (dx2 > 0 && dy2 > 0) images[8] = bi.getSubimage(w-dx2,h-dy2, dx2, dy2); } public void paint(Graphics g, int x, int y, int sx, int sy) { if (images[0] != null) g.drawImage(images[0], x, y, null); if (images[1] != null) g.drawImage(images[1], x+dx1, y, sx-(dx1+dx2), dy1, null); if (images[2] != null) g.drawImage(images[2], x+sx-dx2, y, null); if (images[3] != null) g.drawImage(images[3], x, y+dy1,dx1,sy-(dy1+dy2), null); if (images[4] != null) g.drawImage(images[4], x+dx1, y+dy1, sx-(dx1+dx2), sy-(dy1+dy2), null); if (images[5] != null) g.drawImage(images[5], x+sx-dx2, y+dy1, dx2, sy-(dy1+dy2), null); if (images[6] != null) g.drawImage(images[6], x, y+sy-dy2, null); if (images[7] != null) g.drawImage(images[7], x+dx1, y+sy-dy2, sx-(dx1+dx2), dy2, null); if (images[8] != null) g.drawImage(images[8], x+sx-dx2, y+sy-dy2, null); } }