gpt4 book ai didi

java - java图形中奇怪的抗锯齿

转载 作者:行者123 更新时间:2023-11-30 08:46:21 25 4
gpt4 key购买 nike

我遇到了这个奇怪的抗锯齿:

enter image description here

左边的形状和右边的形状完全共享曲线部分。然而,黑色曲线出现并打断了绘图和颜色的平滑度。这是一个示例,旨在说明问题。

起初,对于不同的颜色,我认为这是视错觉,(打开和关闭下面注释的 CHECK_# 行)。但是当使用相同的颜色时,就会发生这种情况。

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.geom.Path2D;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class darkBorders extends JPanel {

@Override
protected void paintComponent(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2.setColor(Color.BLACK);
//g2.setColor(Color.WHITE); //CHECK_1
g2.fill(g2.getClip());

int r = 100;

g2.translate(this.getWidth() / 2 - r, this.getHeight() / 2 - r);

Path2D p = new Path2D.Double();
p.moveTo(0, 0);
p.lineTo(r, 0);
p.quadTo(2 * r, r, r, 2 * r);
p.lineTo(0, 2 * r);
p.closePath();
g2.setColor(new Color(0xFF9900));
//g2.setColor(new Color(0x00CC66)); //CHECK_2
g2.fill(p);

p.reset();
p.moveTo(2 * r, 0);
p.lineTo(r, 0);
p.quadTo(2 * r, r, r, 2 * r);
p.lineTo(2 * r, 2 * r);
p.closePath();
g2.setColor(new Color(0xFF9900));
g2.fill(p);


g2.dispose();
}

public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.setContentPane(new darkBorders());
frame.setSize(500, 300);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}

有什么可以解决这个问题的吗?非常感谢。

最佳答案

除了 fill(填充内部)之外,还要执行 draw(绘制轮廓)。我如履薄冰,但你可以用笔划宽度做一些事情。

关于java - java图形中奇怪的抗锯齿,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32906030/

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