gpt4 book ai didi

java - 如何使渐变背景颜色更平滑

转载 作者:行者123 更新时间:2023-11-29 03:43:02 25 4
gpt4 key购买 nike

将 GradientPaint 用于渐变背景颜色并不总是令人满意,尤其是在某些尺寸下。例如这段代码:

public class TestPanel extends JPanel {

protected void paintComponent( Graphics g ) {
Graphics2D g2d = (Graphics2D) g;
int w = getWidth();
int h = getHeight();
Color color1 = Color.BLACK;
Color color2 = Color.GRAY;
GradientPaint gp = new GradientPaint(0, 0, color1, 0, h, color2);
g2d.setPaint(gp);
g2d.fillRect(0, 0, w, h);
}

public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
JFrame frame = new JFrame();
TestPanel panel = new TestPanel();
frame.add(panel);
frame.setSize(200,200);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
});
}
}

产生以下内容:

non-cyclic

循环版本看起来比那个更糟糕:

cyclic

如何让渐变看起来更平滑(在这两种情况下)?

编辑:

这似乎(至少部分)是显示器问题。渐变颜色在我的上网本(1024 x 600,真彩色 32 位)上看起来很糟糕,而在我的台式电脑(1280 x 1024,真彩色 32 位)上看起来好多了。但是即使使用桌面显示器,结果仍然不是那么流畅。

两者都使用 Java Version 6 Update 33。

这是否意味着应用程序应该只在以较高分辨率查看时才使用渐变背景?

编辑 2:

无论如何,对于那些面临类似问题或只是对此感兴趣的人,我认为让渐变颜色看起来更平滑的唯一解决方案就是更高的分辨率(当然假设显示器已经设置为真彩色)-不是真正的解决方案。就像我在评论中所说的那样,我认为 1024 x 600 分辨率对于简单的黑色到灰色渐变颜色就足够了,但看来我错了。当相同的代码在带有支持更高分辨率的显示器的计算机上运行时,渐变看起来更好,就像通过我的桌面显示器 1280 x 1024 一样。不幸的是,我没有更好的分辨率选项,但我相信它看起来会更平滑。我还注意到,当通过更好的显示器查看我上传的两张图片(从我的上网本上截取)时,这些相同的图片看起来更平滑......所以它一定只是分辨率。

由于没有解决方案,我认为使用始终看起来平滑的特定渐变步骤(如黑色到灰色,即使在较低分辨率下看起来也很糟糕)的唯一方法是让 gui 程序测试以解决启动问题并选择显示适当的渐变,但我不确定这是否值得。使用较少的梯度步骤只是一种折衷。

由于缺乏更多/更好的回应,我接受了使用预抖动图像作为答案。

最佳答案

我看到了你的图像,但无法重现 strip 。您是否将显示器设置为 TrueColor?您使用的是最新的 Java 版本吗?无论如何,以下行可能会有所帮助:

g2d.setRenderingHint(RenderingHints.KEY_DITHERING, RenderingHints.VALUE_DITHER_ENABLE);

编辑:Java 似乎不支持 TrueColor 渐变的抖动,即使您没有足够的灰色阴影...一些想法:

  • 使用一些颜色
  • 使用预先抖动的图像文件

http://en.wikipedia.org/wiki/Colour_banding

关于java - 如何使渐变背景颜色更平滑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12252426/

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