png画像から図形を描画するクラスがあるので、その図形を使用して、プロジェクトに必要なカスタムボタンの境界線を描画できます。画像の形を描くためのクラスのコードは次のとおりです。
public class CreateShapeClass {
public static Area createArea(BufferedImage image, int maxTransparency) {
Area area = new Area();
Rectangle rectangle = new Rectangle();
for (int x = 0; x < image.getWidth(); x++) {
for (int y = 0; y < image.getHeight(); y++) {
int rgb = image.getRGB(x, y);
rgb = rgb >>> 24;
if (rgb >= maxTransparency) {
rectangle.setBounds(x, y, 1, 1);
area.add(new Area(rectangle));
}
}
}
return area;
}
}
ただし、これには処理に非常に長い時間がかかります。メインアプリケーションで図形を事前に描画し、それらを配列に格納して他のクラスに渡すことで、レンダリング時間が短縮されると思いました。ただし、paintBorder()メソッドがボタンの境界線を描画するのにかかる時間もかなり長い時間になります(ただし、形状の描画に必要な時間よりも短くなります)。これは、上記のクラスによって生成された形状が塗りつぶされており、空。Ellipse2Dなどのjava2dを使用して図形を描画しようとしましたが、ボタンのレンダリングにかかる時間はごくわずかです。この分野の経験者なら誰でも、BufferedImageの境界となる形状を生成する方法を教えてくれますか?上記のクラスを使用して、背景が透明なPNG画像から形状を作成します。