📄 proxygraphics.java
字号:
/*
* ProxyGraphics.java
*
* Created on 2007年4月2日, 下午11:59
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package dyno.swing.beans;
import java.awt.Color;
import java.awt.Composite;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GraphicsConfiguration;
import java.awt.Image;
import java.awt.Paint;
import java.awt.Rectangle;
import java.awt.RenderingHints;
import java.awt.Shape;
import java.awt.Stroke;
import java.awt.font.FontRenderContext;
import java.awt.font.GlyphVector;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
import java.awt.image.BufferedImageOp;
import java.awt.image.ImageObserver;
import java.awt.image.RenderedImage;
import java.awt.image.renderable.RenderableImage;
import java.io.StreamTokenizer;
import java.io.StringReader;
import java.text.AttributedCharacterIterator;
import java.util.ArrayList;
import java.util.Map;
/**
*
* @author rehte
*/
public class ProxyGraphics extends Graphics2D {
private Graphics2D proxy;
private ArrayList<Text> texts = new ArrayList<Text>();
/** Creates a new instance of ProxyGraphics */
public ProxyGraphics(Graphics2D g2d) {
proxy = g2d;
}
public void setTexts(ArrayList<Text> texts) {
this.texts = texts;
}
public ArrayList<Text> getTexts() {
return texts;
}
public void draw(Shape s) {
proxy.draw(s);
}
public boolean drawImage(Image img, AffineTransform xform, ImageObserver obs) {
return proxy.drawImage(img, xform, obs);
}
public void drawImage(BufferedImage img, BufferedImageOp op, int x, int y) {
proxy.drawImage(img, op, x, y);
}
public void drawRenderedImage(RenderedImage img, AffineTransform xform) {
proxy.drawRenderedImage(img, xform);
}
public void drawRenderableImage(RenderableImage img, AffineTransform xform) {
proxy.drawRenderableImage(img, xform);
}
public void drawString(String str, int x, int y) {
if (str == null || str.length() == 0) {
return;
}
int leftx = x;
int topy = y - proxy.getFontMetrics().getAscent();
int height = proxy.getFontMetrics().getHeight();
StringBuilder builder = null;
int pointer = 0;
while (pointer < str.length()) {
char c = str.charAt(pointer++);
if (Character.isLetter(c)) {
builder = new StringBuilder();
while (Character.isLetter(c)) {
builder.append(c);
if (pointer == str.length()) {
break;
} else {
c = str.charAt(pointer++);
}
}
String s = builder.toString();
Text text = new Text(s);
int width = proxy.getFontMetrics().stringWidth(s);
text.setBounds(leftx, topy, width, height);
texts.add(text);
leftx = x + proxy.getFontMetrics().stringWidth(str.substring(0, pointer));
if (pointer == str.length()) {
break;
} else {
if (!Character.isLetter(c)) {
pointer--;
}
}
}
}
proxy.drawString(str, x, y);
}
public void drawString(String str, float x, float y) {
System.out.println("drawString1");
proxy.drawString(str, x, y);
}
public void drawString(AttributedCharacterIterator iterator, int x, int y) {
System.out.println("drawString2");
proxy.drawString(iterator, x, y);
}
public void drawString(AttributedCharacterIterator iterator, float x, float y) {
System.out.println("drawString3");
proxy.drawString(iterator, x, y);
}
public void drawGlyphVector(GlyphVector g, float x, float y) {
System.out.println("drawGlyphVector");
proxy.drawGlyphVector(g, x, y);
}
public void fill(Shape s) {
proxy.fill(s);
}
public boolean hit(Rectangle rect, Shape s, boolean onStroke) {
return proxy.hit(rect, s, onStroke);
}
public GraphicsConfiguration getDeviceConfiguration() {
return proxy.getDeviceConfiguration();
}
public void setComposite(Composite comp) {
proxy.setComposite(comp);
}
public void setPaint(Paint paint) {
proxy.setPaint(paint);
}
public void setStroke(Stroke s) {
proxy.setStroke(s);
}
public void setRenderingHint(RenderingHints.Key hintKey, Object hintValue) {
proxy.setRenderingHint(hintKey, hintValue);
}
public Object getRenderingHint(RenderingHints.Key hintKey) {
return proxy.getRenderingHint(hintKey);
}
public void setRenderingHints(Map<?, ?> hints) {
proxy.setRenderingHints(hints);
}
public void addRenderingHints(Map<?, ?> hints) {
proxy.addRenderingHints(hints);
}
public RenderingHints getRenderingHints() {
return proxy.getRenderingHints();
}
public void translate(int x, int y) {
proxy.translate(x, y);
}
public void translate(double tx, double ty) {
proxy.translate(tx, ty);
}
public void rotate(double theta) {
proxy.rotate(theta);
}
public void rotate(double theta, double x, double y) {
proxy.rotate(theta, x, y);
}
public void scale(double sx, double sy) {
proxy.scale(sx, sy);
}
public void shear(double shx, double shy) {
proxy.shear(shx, shy);
}
public void transform(AffineTransform Tx) {
proxy.transform(Tx);
}
public void setTransform(AffineTransform Tx) {
proxy.setTransform(Tx);
}
public AffineTransform getTransform() {
return proxy.getTransform();
}
public Paint getPaint() {
return proxy.getPaint();
}
public Composite getComposite() {
return proxy.getComposite();
}
public void setBackground(Color color) {
proxy.setBackground(color);
}
public Color getBackground() {
return proxy.getBackground();
}
public Stroke getStroke() {
return proxy.getStroke();
}
public void clip(Shape s) {
proxy.clip(s);
}
public FontRenderContext getFontRenderContext() {
return proxy.getFontRenderContext();
}
public Graphics create() {
ProxyGraphics pg = new ProxyGraphics((Graphics2D) proxy.create());
pg.setTexts(this.getTexts());
return pg;
}
public Color getColor() {
return proxy.getColor();
}
public void setColor(Color c) {
proxy.setColor(c);
}
public void setPaintMode() {
proxy.setPaintMode();
}
public void setXORMode(Color c1) {
proxy.setXORMode(c1);
}
public Font getFont() {
return proxy.getFont();
}
public void setFont(Font font) {
proxy.setFont(font);
}
public FontMetrics getFontMetrics(Font f) {
return proxy.getFontMetrics(f);
}
public Rectangle getClipBounds() {
return proxy.getClipBounds();
}
public void clipRect(int x, int y, int width, int height) {
proxy.clipRect(x, y, width, height);
}
public void setClip(int x, int y, int width, int height) {
proxy.setClip(x, y, width, height);
}
public Shape getClip() {
return proxy.getClip();
}
public void setClip(Shape clip) {
proxy.setClip(clip);
}
public void copyArea(int x, int y, int width, int height, int dx, int dy) {
proxy.copyArea(x, y, width, height, dx, dy);
}
public void drawLine(int x1, int y1, int x2, int y2) {
proxy.drawLine(x1, y1, x2, y2);
}
public void fillRect(int x, int y, int width, int height) {
proxy.fillRect(x, y, width, height);
}
public void clearRect(int x, int y, int width, int height) {
proxy.clearRect(x, y, width, height);
}
public void drawRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight) {
proxy.drawRoundRect(x, y, width, height, arcWidth, arcHeight);
}
public void fillRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight) {
proxy.fillRoundRect(x, y, width, height, arcWidth, arcHeight);
}
public void drawOval(int x, int y, int width, int height) {
proxy.drawOval(x, y, width, height);
}
public void fillOval(int x, int y, int width, int height) {
proxy.fillOval(x, y, width, height);
}
public void drawArc(int x, int y, int width, int height, int startAngle, int arcAngle) {
proxy.drawArc(x, y, width, height, startAngle, arcAngle);
}
public void fillArc(int x, int y, int width, int height, int startAngle, int arcAngle) {
proxy.fillArc(x, y, width, height, startAngle, arcAngle);
}
public void drawPolyline(int[] xPoints, int[] yPoints, int nPoints) {
proxy.drawPolyline(xPoints, yPoints, nPoints);
}
public void drawPolygon(int[] xPoints, int[] yPoints, int nPoints) {
proxy.drawPolygon(xPoints, yPoints, nPoints);
}
public void fillPolygon(int[] xPoints, int[] yPoints, int nPoints) {
proxy.fillPolygon(xPoints, yPoints, nPoints);
}
public boolean drawImage(Image img, int x, int y, ImageObserver observer) {
return proxy.drawImage(img, x, y, observer);
}
public boolean drawImage(Image img, int x, int y, int width, int height, ImageObserver observer) {
return proxy.drawImage(img, x, y, width, height, observer);
}
public boolean drawImage(Image img, int x, int y, Color bgcolor, ImageObserver observer) {
return proxy.drawImage(img, x, y, bgcolor, observer);
}
public boolean drawImage(Image img, int x, int y, int width, int height, Color bgcolor, ImageObserver observer) {
return proxy.drawImage(img, x, y, width, height, bgcolor, observer);
}
public boolean drawImage(Image img, int dx1, int dy1, int dx2, int dy2, int sx1, int sy1, int sx2, int sy2, ImageObserver observer) {
return proxy.drawImage(img, dx1, dy1, dx2, dy2, sx1, sy1, sx2, sy2, observer);
}
public boolean drawImage(Image img, int dx1, int dy1, int dx2, int dy2, int sx1, int sy1, int sx2, int sy2, Color bgcolor, ImageObserver observer) {
return drawImage(img, dx1, dy1, dx2, dy2, sx1, sy1, sx2, sy2, bgcolor, observer);
}
public void dispose() {
proxy.dispose();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -