Масштабирование: как изменить размер чертежа по центру - PullRequest
0 голосов
/ 10 марта 2020

Я сделал рисунок, используя объекты Ellipses и Path.2D. но как мне изменить размер всего чертежа вместе со всеми другими фигурами внутри фигуры. Я сделал счастливое лицо, используя круг, но как мне изменить размер всего счастливого лица вместе с другими частями внутри круга, такими как глаза, рот и нос.

Я использовал метод .scaling (), но он отодвигает мой рисунок от центра. я хочу изменить размер чертежа, но не перемещая его от центра

 import java.awt.*;
 import java.awt.geom.Ellipse2D;
 import java.awt.geom.Path2D;
 import java.nio.file.Path;

publi c class Circle {

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,390,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,386.66,350,420,320);
    g2d.setColor(Color.WHITE);
    g2d.fill(teeth);

    Path2D.Double tongue = new Path2D.Double();
    tongue.moveTo(270,350);
    tongue.curveTo(270,450,354,450,354,350);
    g2d.setColor(Color.RED);
    g2d.fill(tongue);

    Path2D.Double nose = new Path2D.Double();
    nose.moveTo(320,255);
    nose.curveTo(420,232,420,286,320,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,45,30,30);
    g2d.setColor(new Color(254,220,86));
    g2d.fill(ball2);

    Ellipse2D.Double ball3 = new Ellipse2D.Double(300,30,30,30);
    g2d.setColor(new Color(254,220,86));
    g2d.fill(ball3);


}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...