Ява рисовать границы круга - PullRequest
1 голос
/ 12 ноября 2010

Используя java awt, как заставить код нарисовать границу для круга. Отныне у кода есть проблемы с производительностью, и, возможно, он будет работать быстрее, если просто нарисует контур.

<code><br>
       g.fillOval(gameLogic.getParticleXCoor(i) - 3,
                  gameLogic.getParticleYCoor(i) - 3,
                  gameLogic.getParticleSize(i) + 6,
                  gameLogic.getParticleSize(i) + 6);
       g.setColor(gameLogic.getParticleColor(i));
       g.fillOval(gameLogic.getParticleXCoor(i),
                  gameLogic.getParticleYCoor(i),
                  gameLogic.getParticleSize(i),
                  gameLogic.getParticleSize(i));

Ответы [ 2 ]

1 голос
/ 12 ноября 2010

Вы можете попробовать drawOval вместо fillOval.

0 голосов
/ 03 января 2019

Если вы хотите нарисовать круг, используйте Ellipse2D класс:

Ellipse2D.Double circleBorder = new Ellipse2D.Double(x, y, 15, 15); 

После всего лишь вызова draw() Метид из Graphics2D

g2.draw(circleBorder);

Полный код для рисования значков круга, например, здесь:

@Override
public void paintIcon(@Nonnull Component c, @Nonnull Graphics g, int x, int y) {
    Graphics2D g2 = (Graphics2D) g;
    RenderingHints hints = new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
    BasicStroke dashed =new BasicStroke(3.0f,BasicStroke.CAP_BUTT,BasicStroke.JOIN_MITER,10.0f);
    Ellipse2D.Double circle = new Ellipse2D.Double(x+1, y+1, 14, 14);
    Ellipse2D.Double circleBorder = new Ellipse2D.Double(x, y, 15, 15);
    g2.setColor(getColor());
    g2.setRenderingHints(hints);
    g2.fill(circle);
    Composite oldComposite=g2.getComposite();
    g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0));        
    g2.setColor(new Color(1,1,1,1));
    g2.setStroke(dashed);
    g2.draw(circleBorder);
    g2.setComposite(oldComposite);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...