如何绘制多边形,然后按比例调整大小并将其移动到显示区域的中心?

时间:2019-06-24 02:08:34

标签: java graphics polygon graphics2d

我当时在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 :(得分:0)

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提供的资源