2

私はJavaFXを使い始めていますが、基本的に実装しようとしているのはカラーピッカーです。最初は、すべての原色/二次色を通過する LinearGradient を持つ四角形を考えました。

私が望むもののように見えますが、問題は、このノードの特定の座標 (x、y) で RGB 値を取得できないことです。それが色である場合、任意の形状の塗りつぶしプロパティを介してそれを行うことができることを私は知っています。

しかし、 LinearGradient/Paint 内の何かの RGB 値を取得する方法はありますか?

4

2 に答える 2

1

このColorPicker JavaFX の例は役に立ちますか?

[...]

function colorAtLocation(x:Integer, y:Integer) : Color {
    var bimg = iv.image.bufferedImage;
    if (x < 0 or x >= bimg.getWidth() or y < 0 or y >= bimg.getHeight()) {
        return null;
    }
    var rgb = bimg.getRGB(x, y);
    var r = Bits.bitAnd(Bits.shiftRight(rgb, 16), 0xff);
    var g = Bits.bitAnd(Bits.shiftRight(rgb,  8), 0xff);
    var b = Bits.bitAnd(Bits.shiftRight(rgb,  0), 0xff);
    Color.rgb(r, g, b)
}

function updateSelectedColor(e:MouseEvent) {
    var rgb = colorAtLocation(e.x, e.y);
    if (rgb != null) {
        picker.selectedColor = rgb;
    }
}

[...]
于 2009-03-13T08:09:18.493 に答える
0

JavaFXの例は、に読み込まれたイメージColorPickerから始まり、. pngimageImageView

Rectangle質問は、を含むJavaFX から始まりLinearGradientます。

長方形の内容をバッファリングされた画像に取得するには、java.awt.Robot を使用できます。

        var rectangle = new java.awt.Rectangle(x,y,width,height);
        var robot = new java.awt.Robot();
        var bufferedImage = robot.createScreenCapture(rectangle);   

whererectangleは、対象のビットを含む JavaFX Rectangle の座標を記述します。

このrobot.createScreenCapture呼び出しには、スクリーン キャプチャを行うために、スクリーンが表示されている必要があるという落とし穴があります。バッファリングされた画像を作成するためのより良い方法があるはずですが、まだ遭遇していません。

于 2009-03-30T19:54:22.630 に答える