gpt4 book ai didi

java - 用图形填充#fillOval 看起来不对

转载 作者:行者123 更新时间:2023-11-30 11:12:58 24 4
gpt4 key购买 nike

我正在尝试绘制一个大圆并在中心填充一个较小的圆。这是我目前所拥有的:

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class Main {

public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setPreferredSize(new Dimension(50, 75));

frame.add(new JPanel() {

@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);

Graphics2D g2 = (Graphics2D) g;

g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2.setColor(Color.BLACK);
g2.drawOval(0, 0, 26, 26);
g2.fillOval(4, 4, 18, 18);
}

});

frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}

}

小圆圈没有正确居中,看起来很奇怪。但是,如果我更改 g2.fillOval(4, 4, 18, 18);到 g2.drawOval(4, 4, 18, 18);它看起来正确居中,但显然没有填充。我希望这两种方法可以在相同的位置和大小绘制椭圆。我不确定为什么会这样。任何帮助将不胜感激。

最佳答案

好吧,如果我同时调用 drawOval 和 fillOval,它看起来好多了,就好像 drawOval 纠正了一些丢失的像素。

            g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2.setColor(Color.BLACK);
g2.drawOval(0, 0, 26, 26);
g2.drawOval(4, 4, 18, 18);
g2.fillOval(4, 4, 18, 18);

如果我仔细观察,东南区域的一些像素是灰色而不是黑色(好像 drawOval 效果太细了),可能使用比默认宽度更大的笔划也会纠正这个问题。

关于java - 用图形填充#fillOval 看起来不对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26624083/

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