簡體   English   中英

Java AWT fillOval()無法正常工作

[英]Java AWT fillOval() not working

我正在開發一個繪制圖形的程序,所以我想繪制點! 我希望這些點是圓形的,因為這通常是點的表示方式,據我所知, g2.fillOval(x, y, height, width)應該繪制一個填充的橢圓,其高度height和寬度width(x, y) 這是我目前的代碼:

private void drawCenteredCircle(Graphics g, int x, int y, int radius) {
    Graphics2D g2 = (Graphics2D) g.create();
    g2.setColor(pointColor);
    g2.fillOval(x-radius, y-radius, 2*radius, 2*radius);
    g2.dispose();
}

然后這被稱為在paintComponent()一個的方法JPanel 它確實會繪制,所以我知道代碼可以正常工作,但是由於某種原因,它會繪制一個正方形,如下所示: 我的方形橢圓形:(

在此處輸入圖片說明

我也試過這個:

private void drawCenteredCircle(Graphics g, int x, int y, int radius) {
    Graphics2D g2 = (Graphics2D) g.create();
    g2.setColor(pointColor);
    g2.fill(new Ellipse2D.Float(x-radius, y-radius, 2*radius, 2*radius);
    g2.dispose();
}

但是得到了相同的結果。 任何有關如何繪制實心圓/橢圓的幫助將不勝感激。

您將需要設置Graphic2D的RenderingHints來處理別名。 這樣可以消除可能導致您的(小)圓圈呈現為正方形的鋸齒。 就像是:

Graphics2D g2 = (Graphics2D) g;
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM