2016-10-09 14 views
2

グラフを描画するプログラムで作業していますので、ポイントを描画したいと思います!私は点がどのように表現されているのかという点で循環的であることを願っています。私の知る限りでは、g2.fillOval(x, y, height, width)は、高さがheight、幅がwidthの塗りつぶされた楕円を(x, y)に描く必要があります。その後、JPanelpaintComponent()方法で呼び出されJava AWT fillOval()が機能しません

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(); 
} 

:これは現時点では私のコードです。それは描くんので、私は、コードが機能している知っているが、何らかの理由で、それはそうのように、四角形を描画: my square oval :(

enter image description here

は、私もこの試みた:

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(); 
} 

をしかし得ました同じ結果。塗りつぶされた円/楕円を描く方法についての助けがあれば、大歓迎です。

+0

私はまともな[mcve]がなければ、まともな答えを得られないでしょう。時間が本質である場合は、そのリンクを見て、これらのリンクを作成して投稿することを検討してください。すべてのコードは、リンクではなくここに掲載する必要があります。 –

+0

RenderingHintsが正しく設定されていないことが原因です。それを試してみてください。 –

+0

リンクにコードが投稿されていません。これは、私の結果がどのように見えるかというイメージでした。また、最小限で完全で検証可能なサンプルページのおかげで、私はそれを読んで、その形式を使用して質問を投稿しています。 – Shannon

答えて

3

Graphic2DのRenderingHintsをエイリアシングを処理するように設定することをお勧めします。これにより、あなたの(小さな)サークルが四角形としてレンダリングされる原因となるぎこちない部分が滑らかになります。次のようなものがあります:

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

ああ、問題を解決した、ありがとう非常に:) – Shannon

関連する問題