在代号一中对图像应用蒙版的解决方法

Workaround for applying a mask to an image in Codename 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;
}

这对图像非常有效,但如果我将 FontImage 传递给它,该函数会抛出异常:java.lang.RuntimeException: Unsupported Operation。如何检查屏蔽是否是受支持的操作?我想避免更改应用程序逻辑。

FontImage 是独一无二的 requiresDrawImage。您可以分别使用 toImage()toEncodedImage() 将其转换为常规图像甚至编码图像。

对于此用例,常规图像将是 better/faster,因此 toImage() 应该效果最好。