Java AWT: Abgerundetes Bild mit glatten Kanten zeichnenJava

Java-Forum
Anonymous
 Java AWT: Abgerundetes Bild mit glatten Kanten zeichnen

Post by Anonymous »

Ich mache ein Spiel und würde gerne abgerundete Bilder rendern, aber jede Lösung, die ich ausprobiert habe, zeichnet entweder hässliche und gezackte Ecken oder verlangsamt meine Spielschleife erheblich. Ich würde gerne eine Lösung finden, die sowohl glatte Kurven zeichnet als auch keinen großen Einfluss auf die Leistung meines Spiels hat. Ich habe eine Rendering-Schleife, die jeden Frame ausführt, wobei der Renderer jedes meiner Objekte durchgeht und ihre jeweilige Render-Methode aufruft:

Code: Select all

   @Override
public void paintComponent(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
for (UIImage child : children) {
child.render(g2);
}
}
So sieht die UIImage-Rendermethode aus:

Code: Select all

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);
}
Jede Hilfe ist willkommen!

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post