Как нарисовать многоугольник, затем изменить его размер по шкале и переместить в центр области отображения? - PullRequest
0 голосов
/ 24 июня 2019

Я делал свою домашнюю работу на Graphics2d и Polygon, однако я не могу найти (или, возможно, использую неправильное ключевое слово?) Решение моей домашней работы.

Скриншот вопроса Hoemwork:

img

Приведенный ниже код является первым подходом, который я попробовал, я вижу только пустой экран.После некоторых поисков в Google я понял, что неправильно использовал .scale и .translate, поэтому я перемещаю его перед .drawPolygon, на этот раз я вижу многоугольник, но это после того, как я увеличил свое окно, что означает, что это не так.видны в пределах 300, 300 изначально?

import javax.swing.*;
public class PolygonExample extends JFrame{
    public PolygonExample(){
        super("Drawing Red Polygon");
        setSize(300, 300);
        setVisible (true);
    }
    public void paint (Graphics g){
        super.paint(g);
        int xValue[] = {0, 10, 7, -7, -10};
        int yValue[] = {-10, -2, 10, 10, -2};
        Polygon polygon = new Polygon(xValue, yValue, 5);
        g.setColor(Color.RED);
        g.drawPolygon(polygon);

        Graphics2D g2d = (Graphics2D) g;
        g2d.scale(5.0, 5.0);
        g2d.translate(150, 150);
    }
    public static void main(String[] args) {
        new PolygonExample();
    }
}

Я ожидаю, что многоугольник будет нарисован в центре области отображения (в пределах 300x300), но я ничего не видел на экране.После увеличения окна я вижу свой многоугольник, но он не находится в области 300, 300, которую я установил

1 Ответ

0 голосов
/ 24 июня 2019
import javax.swing.*;
import java.awt.geom.AffineTransform;
public class PolygonExample extends JFrame{
    public PolygonExample(){
        super("Drawing Red Polygon");
        setSize(300, 300);
        setVisible (true);
    }
    public void paint (Graphics g){
        super.paint(g);
        int xValue[] = {0, 10, 7, -7, -10};
        int yValue[] = {-10, -2, 10, 10, -2};
        Polygon polygon = new Polygon(xValue, yValue, 5);

        g.setColor(Color.RED);
        Graphics2D g2d = (Graphics2D) g;
        AffineTransform at = new AffineTransform(5., 0., 0., 5., 150., 150.);
        g2d.setTransform(at);

        g.drawPolygon(polygon);     
    }
    public static void main(String[] args) {
        new PolygonExample();
    }
}

Код выше сделал то, что я хотел сделать

Спасибо @MadProgrammer за ресурс

...