我试图画一个大圆圈并在中心填充一个较小的圆圈。以下是我到目前为止的情况:
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);它看起来正确居中,但显然没有填充。我希望这两种方法在相同的位置和大小绘制椭圆。我不确定为什么会这样。任何帮助将不胜感激。
答案 0 :(得分:1)
好吧,如果我同时调用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效果太薄了),可能使用宽度大于默认值的笔划也会纠正这个问题。