2016-10-09 3 views
2

Я работаю над программой, которая рисует график, поэтому я бы хотел нарисовать очки! Я бы хотел, чтобы точки были круглыми, так как это обычно показывает точки, и, насколько мне известно, g2.fillOval(x, y, height, width) должен нарисовать заполненный овал с высотой height и шириной width по адресу (x, y). Это мой код на данный момент: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(); 
} 

которая затем вызывается в paintComponent() методом JPanel. Он делает рисовать, так что я знаю, что код работает, но по какой-то причине, он рисует квадрат, например, так: 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 для обработки псевдонимов. Это сглаживает неровности, которые могут привести к тому, что ваш (маленький) круг будет отображаться как квадрат. Что-то вроде:

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

Ах решил проблему, спасибо очень :) – Shannon

Смежные вопросы