我已经使用Ellipses和Path.2D对象绘制了图形。但是如何调整整个图形以及图形中所有其他形状的大小。我使用圆圈制作了一张幸福的脸,但是如何调整整个幸福的脸以及圆圈中其他部分(例如眼睛,嘴巴和鼻子)的大小。
我使用了.scaling()方法,但是它使我的绘图远离中心。我想调整绘图大小,但又不想将其从中心移开
import java.awt.*;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Path2D;
import java.nio.file.Path;
公共类圈子{
private int x;
private int y;
private double size;
private Color c;
private int d,s=1;
public Circle(int x,int y,double s,Color color){
this.x = x;
this.y = y;
c = color;
size = s;
}
public void draw(Graphics2D g2d){
g2d.scale(s,s);
g2d.rotate(d,320,255);
Ellipse2D.Double circle = new Ellipse2D.Double(x,y,size,size);
g2d.setColor(c);
g2d.fill(circle);
Ellipse2D.Double eye = new Ellipse2D.Double(220,200,60,60);
g2d.setColor(Color.WHITE);
g2d.fill(eye);
Ellipse2D.Double eye2 = new Ellipse2D.Double(330,150,90,90);
g2d.setColor(Color.WHITE);
g2d.fill(eye2);
Ellipse2D.Double eyeball = new Ellipse2D.Double(240,225,23,23);
g2d.setColor(Color.BLACK);
g2d.fill(eyeball);
Ellipse2D.Double eyeball2 = new Ellipse2D.Double(340,163,35,35);
g2d.setColor(Color.BLACK);
g2d.fill(eyeball2);
Path2D.Double mouth = new Path2D.Double();
mouth.moveTo(220,320);
mouth.curveTo(253.33,390,386.66,420,320);
g2d.setColor(new Color(101,67,33));
mouth.closePath();
g2d.fill(mouth);
Path2D.Double teeth = new Path2D.Double();
teeth.moveTo(220,320);
teeth.curveTo(253.33,350,320);
g2d.setColor(Color.WHITE);
g2d.fill(teeth);
Path2D.Double tongue = new Path2D.Double();
tongue.moveTo(270,350);
tongue.curveTo(270,450,354,350);
g2d.setColor(Color.RED);
g2d.fill(tongue);
Path2D.Double nose = new Path2D.Double();
nose.moveTo(320,255);
nose.curveTo(420,232,286,272);
g2d.setColor(new Color(253,165,15));
g2d.fill(nose);
Path2D.Double crown = new Path2D.Double();
crown.moveTo(210,130);
crown.lineTo(420,130);
crown.lineTo(480,50);
crown.lineTo(400,100);
crown.lineTo(315,50);
crown.lineTo(240,100);
crown.lineTo(160,50);
crown.closePath();
g2d.setColor(new Color(255,244,163));
g2d.fill(crown);
Ellipse2D.Double ball = new Ellipse2D.Double(160,45,30,30);
g2d.setColor(new Color(254,220,86));
g2d.fill(ball);
Ellipse2D.Double ball2 = new Ellipse2D.Double(455,86));
g2d.fill(ball2);
Ellipse2D.Double ball3 = new Ellipse2D.Double(300,86));
g2d.fill(ball3);
}