gpt4 book ai didi

Java Swing - 闪烁的 Canvas 图形

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:32:33 25 4
gpt4 key购买 nike

我必须编写一个简单的 Java 应用程序,它可以加载图片、以 GUI 形式显示它、允许用户应用一些转换并显示转换后的图片。我的解决方案工作正常,但 UI 有点闪烁,因为重绘方法调用过于频繁(例如,当用户使用 JSlider 缩放图像时)

我的代码是这样的:

public class ImageCanvas extends Canvas
{
private BufferedImage image;
// ...

@Override
public void paint(Graphics g)
{
Graphics2D g2d = (Graphics2D) g;
if(image != null)
{
// I draw out the image...
}
}

public void setImage(BufferedImage image)
{
this.image = image;
this.repaint();
}

public void setRotation(double rotation)
{
this.rotation = rotation;
this.repaint();
}

public void setScale(double scaleX, double scaleY)
{
//set the scaling field, then repaint ....
}

// and so on...
}

当然,我的主 UI 上有一个 ImageCanvas 控件,我只需调用重绘 Canvas 区域的公共(public)方法(例如,参见上面的“setRotation”方法)。我知道这是一个简单的问题,但我什至没有在 Canvas 上找到 DoubleBuffered 属性...

感谢任何帮助。

最佳答案

双缓冲是 Swing(即 JComponent 派生)类的内置。

如果你想要内置双缓冲,你应该扩展 JPanel 而不是 Canvas,并覆盖 paintComponent,而不是 paint

关于Java Swing - 闪烁的 Canvas 图形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8406734/

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