gpt4 book ai didi

Java Swing 如何缩放三角形

转载 作者:行者123 更新时间:2023-12-01 19:39:15 26 4
gpt4 key购买 nike

当我更改窗口大小时,我想绘制一些随机三角形并缩放它们。

我有一个单独的类MyTriangle,它扩展了MyShape。我还有两个变量:scaleXscaleY。每当我尝试将三角形 x 和 y 值相乘并更改窗口大小时,三角形就会疯狂并突然消失。当我尝试写

graphics.fillPolygon(new int[]{(int)(x1*scX),(int)(x2*scX)(int)(x3*scX)}, new int[]{(int)(y1*scY),(int)(y2*scY),(int)(y3*scY), 3);

由于某种原因,我的窗口没有任何反应。

//from MyShape class:
//scX = window.getWidth()/(double)window.defaultWidth;
//scY = window.getHeight()/ (double)window.defaultHeight;

public class MyTriangle extends MyShape {
int[] x;
int[] y;
public MyTriangle(int x1, int x2, int x3, int y1, int y2, int y3, int red, int green, int blue) {
super(x1, x2, x3, y1, y2, y3, red, green, blue);
this.x=new int[]{x1,x2,x3};
this.y=new int[]{y1,y2,y3};
}

@Override
protected void paintComponent(Graphics graphics) {
super.paintComponent(graphics);
for(int i = 0; i<3; i++){
x[i]=(int)(x[i]*scX);
y[i]=(int)(y[i]*scY);
}
graphics.fillPolygon(x,y,3);
}

我应该怎样做才能让它发挥作用?像这样的缩放对于矩形和椭圆形来说效果很好。

最佳答案

每次绘制时都会缩放它。因此,如果在进行缩放后比例因子没有设置为 1,那么每次绘制它时,它都会变大或变小。在paintComponent中创建新数组来传递缩放值但保留原始值。
*编辑

 @Override
protected void paintComponent(Graphics graphics) {
int[] xS = new int[3];
int[] yS = new int[3];
super.paintComponent(graphics);
for(int i = 0; i<3; i++){
xS[i]=(int)(x[i]*scX);
yS[i]=(int)(y[i]*scY);
}
graphics.fillPolygon(xS,yS,3);
}

关于Java Swing 如何缩放三角形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55910927/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com