2016-10-20 5 views
2

Ich habe eine Funktion, die ein Bild aufnimmt und rundet es, etwa so:Behelfslösung für eine Maske auf ein Bild, Codename Anwendung One

public static Image roundImage(Image img) { 
    int width = img.getWidth(); 
    Image roundMask = Image.createImage(img.getWidth(), img.getHeight(), 0xff000000); 
    Graphics gr = roundMask.getGraphics(); 
    gr.setColor(0xffffff); 
    gr.fillArc(0, 0, width, width, 0, 360); 
    Object mask = roundMask.createMask(); 
    img = img.applyMask(mask); 
    return img; 
} 

Dies funktioniert gut für Bilder, aber wenn ich FontImage es passieren, Die Funktion löst eine Ausnahme aus: java.lang.RuntimeException: Unsupported Operation. Wie kann ich überprüfen, ob die Maskierung eine unterstützte Operation ist? Ich möchte vermeiden, die Anwendungslogik zu ändern.

Antwort

1

FontImage ist ein requiresDrawImage, das einzigartig ist. Sie können es in ein normales Bild oder sogar in ein kodiertes Bild konvertieren, indem Sie toImage() oder toEncodedImage() verwenden.

Für diesen Anwendungsfall wird ein normales Bild besser/schneller, so dass toImage() sollte am besten funktionieren.