gpt4 book ai didi

java - 当JFrame不断重绘时如何设置形状的渐变?

转载 作者:行者123 更新时间:2023-12-02 04:44:16 25 4
gpt4 key购买 nike

我试图让一个椭圆形在每次达到 50 或 100 的大小时更改其渐变颜色:

    class MyDrawPanel extends JPanel {
public void paintComponent(Graphics g) {

Graphics2D g2d = (Graphics2D) g;

g2d.setColor(Color.white);
g2d.fillRect(0, 0, 300, 300);

if(dmt == 100 || dmt == 50) {
int red = (int) (Math.random() * 256);
int blue = (int) (Math.random() * 256);
int green = (int) (Math.random() * 256);
Color startColour = new Color(red, green, blue);

red = (int) (Math.random() * 256);
blue = (int) (Math.random() * 256);
green = (int) (Math.random() * 256);
Color endColour = new Color(red, green, blue);

GradientPaint gradient = new GradientPaint(300, 100, startColour, 150, 150, endColour);
g2d.setPaint(gradient);
}
g2d.fillOval((size-dmt)/2, (size-dmt)/2 - dmt/2, dmt, dmt);
}
}

(dmt是直径,size是出现的窗口的大小)

我为要用于圆圈的渐变设置了 2 个随机颜色,但我希望它仅在圆圈大小达到 100 或 50 时才更改(它不断增大和缩小到这些大小),但因为我每次运行时都将所有内容重新绘制为白色,除非它的大小恰好为 50 或 100,否则您永远看不到它。我如何使其始终保持这种颜色,直到它必须更改为止?

最佳答案

How do I make it always that colour, until it has to change?

某个地方必须有一个方法可以更改“dmt”变量。该方法应该负责更改类的属性。因此,除了 dmt 变量之外,您还应该有一个 startColorendColor 变量。

那么代码应该是这样的:

public void setDMT(...);
{
if (dmt == 50 || dmt == 100)
{
startColor = ???
endColor = ???
}
}

创建类时,您还需要将 startColor/endColor 设置为默认值。

然后在paintComponent()方法中,您只需使用这两个变量:

    Graphics2D g2d = (Graphics2D) g;

g2d.setColor(Color.white);
g2d.fillRect(0, 0, 300, 300);

GradientPaint gradient = new GradientPaint(300, 100, startColour, 150, 150, endColour);
g2d.setPaint(gradient);

g2d.fillOval((size-dmt)/2, (size-dmt)/2 - dmt/2, dmt, dmt);

关于java - 当JFrame不断重绘时如何设置形状的渐变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29806727/

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