Java AWT: рисование закругленного изображения с гладкими краямиJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Java AWT: рисование закругленного изображения с гладкими краями

Сообщение Anonymous »

Я создаю игру и хотел бы реализовать рендеринг закругленных изображений, однако каждое решение, которое я пробовал, либо рисует некрасивые и неровные углы, либо значительно замедляет игровой цикл. Я хотел бы найти решение, которое одновременно рисовало бы плавные углы и не оказывало бы существенного влияния на производительность моей игры. У меня есть цикл рендеринга, который запускает каждый кадр, где средство рендеринга проходит через каждый из моих объектов и вызывает соответствующий метод рендеринга:

Код: Выделить всё

   @Override
public void paintComponent(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
for (UIImage child : children) {
child.render(g2);
}
}
Вот как выглядит метод рендеринга UIImage:

Код: Выделить всё

public void render(Graphics2D g) {
int radius = 30;

int w = (int) size.X;
int h = (int) size.Y;

int x = (int) pos.X;
int y = (int) pos.Y;

//This way looks good, but creates a lot of lag:
Shape clipShape = new RoundRectangle2D.Double(x, y, w, h, 20, 20);
g.setComposite(AlphaComposite.Clear);
g.fillRect(x, y, w, h);
g.setComposite(AlphaComposite.SrcOver);

g.setPaint(new TexturePaint(image, new Rectangle2D.Float(x, y, w, h)));

g.fill(clipShape);

//This way doesn't have an impact on performance, but looks ugly;
Shape rounded = new RoundRectangle2D.Double(x, y, w, h, radius, radius);
g.setClip(rounded);

g.drawImage(image, x, y, w, h,  null);

g.setClip(null);
}
Любая помощь приветствуется!


Подробнее здесь: https://stackoverflow.com/questions/793 ... ooth-edges
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»