要返回您指定的图像,您可以这样做:
public Image generateImage(int width, int height, double red, double green, double blue, double opacity) {
WritableImage img = new WritableImage(width, height);
PixelWriter pw = img.getPixelWriter();
// Should really verify 0.0 <= red, green, blue, opacity <= 1.0
int alpha = (int) (opacity * 255) ;
int r = (int) (red * 255) ;
int g = (int) (green * 255) ;
int b = (int) (blue * 255) ;
int pixel = (alpha << 24) | (r << 16) | (g << 8) | b ;
int[] pixels = new int[width * height];
Arrays.fill(pixels, pixel);
pw.setPixels(0, 0, width, height, PixelFormat.getIntArgbInstance(), pixels, 0, width);
return img ;
}
在几乎任何用例(我能想到的)中,您也可以创建一个 1 像素乘 1 像素的图像,然后即时放大它。如果这足够了,您可以将其简化为
public Image generateImage(double red, double green, double blue, double opacity) {
WritableImage img = new WritableImage(1, 1);
PixelWriter pw = img.getPixelWriter();
Color color = Color.color(red, green, blue, opacity);
pw.setColor(0, 0, color);
return img ;
}
然后,例如你可以这样做:
Image marshallUniGreen = generateImage(0, 177.0 / 255, 65.0 / 255, 1) ;
ImageView imageView = new ImageView(marshallUniGreen);
imageView.setFitWidth(300);
imageView.setFitHeight(200);
imageView.setPreserveRatio(false);