java - 如何绘制多边形,然后按比例调整大小并将其移动到显示区域的中心?
问题描述
我在 Graphics2d 和 Polygon 上做作业,但是我无法搜索(或者可能使用错误的关键字?)我的作业解决方案。
作业题截图:
下面的代码是我尝试过的第一种方法,我只看到空屏幕。在谷歌上搜索后,我意识到我的 .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 区域内
解决方案
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 的资源
推荐阅读
- javascript - 如何访问 IF/ELSE 中的操作数或参数?
- java - How to utilize AsyncTask for handling asynchronous RestRequests
- javascript - React 组件构造函数何时运行与生命周期相关?
- python - 如何使用 Python Seaborn 在时间序列图中添加标记
- apache-kafka - 创建 KSQL 流时的键
- node.js - 您如何运行来自 Eloquent Javascript Node.js 一书的命令列表
- .htaccess - htaccess - 重定向所有包含 /THIS/something/ANDTHAT/ 的 URL
- javascript - 无法在承诺中使用变量
- rust - Rust 函数名称(调用者)或宏内的任何其他上下文
- typescript - 文档未在 TypeScript 中定义