Как нарисовать достойно выглядящий Круг в Java

Я думаю, близорукость.

Первоначально разработанные интерфейсы предназначались только для использования с экземплярами класса

IMyInterface val = GetObjectImplementingIMyInterface();
val.SomeThingDefinedinInterface();

Это было только с введением интерфейсов, поскольку ограничения для обобщений действительно добавили статический метод к интерфейсу. использовать.

(отвечает на комментарий :) Я полагаю, что для его изменения сейчас потребуется изменить CLR, что приведет к несовместимости с существующими сборками.

24
задан soldier.moth 7 July 2009 в 20:03
поделиться

4 ответа

Оказывается, Java2D (я полагаю, это то, что вы используете) уже неплохо справляется с этим! Здесь есть достойное руководство: http://www.javaworld.com/javaworld/jw-08-1998/jw-08-media.html

Важная строка:

graphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
                          RenderingHints.VALUE_ANTIALIAS_ON);
45
ответ дан 28 November 2019 в 22:11
поделиться

вы можете установить подсказки рендеринга:

Graphics2D g2 = (Graphics2D) g;
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
    RenderingHints.VALUE_ANTIALIAS_ON);
29
ответ дан 28 November 2019 в 22:11
поделиться

Две вещи, которые могут помочь:

  1. Используйте Graphics2D.draw (Shape) с экземпляром java.awt.geom.Ellipse2D вместо Graphics.drawOval
  2. Если результат по-прежнему неудовлетворительный, попробуйте использовать Graphics2D.setRenderingHint , чтобы включить сглаживание

Пример

public void paint(Graphics g) {
    Graphics2D g2d = (Graphics2D) g;
    Shape theCircle = new Ellipse2D.Double(centerX - radius, centerY - radius, 2.0 * radius, 2.0 * radius);
    g2d.draw(theCircle);
}

См. ответ Йозефа для примера setRenderingHint

13
ответ дан 28 November 2019 в 22:11
поделиться

Конечно, вы устанавливаете свой радиус, какой вам нужен:

@Override
public void paint(Graphics g) {
    Graphics2D g2d = (Graphics2D) g;
    g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
    g2d.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
    Ellipse2D.Double hole = new Ellipse2D.Double();
    hole.width = 28;
    hole.height = 28;
    hole.x = 14;
    hole.y = 14;
    g2d.draw(hole);
}
6
ответ дан 28 November 2019 в 22:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: