【发布时间】:2015-07-04 03:00:31
【问题描述】:
我通过这个方法调用我的绘图类:
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
DrawGradient gradient = new DrawGradient();
gradient.draw(g);
DrawCoordinateSystem coor = new DrawCoordinateSystem();
coor.draw(g);
}
我尝试转换 DrawGradient 类中的对象,但由于某种原因,类 DrawCoordinateSystem 中的 Graphics 对象被转换了。为什么?
DrawCoordinateSystem 类:
public class DrawCoordinateSystem {
public DrawCoordinateSystem() {
// TODO Auto-generated constructor stub
}
public void draw(Graphics g1){
Color customcolor = new Color(210,191,245);
int x0 = 15, y0 = 15;
int Xpoints[] = {x0+45, x0+40, x0+40};
int Ypoints[] = {y0, y0-5, y0+5};
int Xpoints1[] = {x0, x0+5, x0-5};
int Ypoints1[] = {y0+45, y0+40, y0+40};
g1.setColor(customcolor);
g1.drawPolygon(Xpoints,Ypoints, 3);
g1.fillPolygon(Xpoints,Ypoints, 3);
g1.drawPolygon(Xpoints1,Ypoints1, 3);
g1.fillPolygon(Xpoints1,Ypoints1, 3);
g1.drawLine(x0, y0, x0+40, y0);
g1.drawLine(x0, y0, x0, y0+40);
g1.setFont(new Font("TimesRoman", Font.PLAIN, 12));
g1.drawString("x", 52, 30);
g1.setFont(new Font("TimesRoman", Font.PLAIN, 12));
g1.drawString("y", 23, 57);
}
}
DrawGradient 类:
public class DrawGradient {
public DrawGradient() {
}
private Color c1;
private Color c2;
public void draw( Graphics g ) {
Graphics2D g2d1 = (Graphics2D) g;
GradientPaint gp = new GradientPaint(0, 0, c2, 0, 100, c1);
g2d1.setPaint(gp);
Rectangle reckt = new Rectangle(0,0,100,100);
g2d1.fill(reckt);
AffineTransform move = new AffineTransform();
move.translate(200, 200);
g2d1.setTransform(move);
}
}
【问题讨论】:
-
改造完成后休息了吗?
-
我该如何休息?
-
您可以反转它,应用与您应用的相反的新
AffineTransform,或者复制Graphics上下文并首先应用您需要的更改
标签: java swing gradient paintcomponent affinetransform