Мне нужен способ отображения серой шкалы в ImageView и при перемещении мыши, если позиция курсора находится в границах ImageView, чтобы показать цветной прожектор в позиции мыши.
Я создал образец, чтобы помочь вам понять, что мне нужно. Этот пример отменяет цвета цветного изображения в событии onMouseMoved.
package javafxapplication3;
import javafx.scene.effect.BlendMode;
import javafx.scene.Group;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.input.MouseEvent;
import javafx.scene.paint.Color;
import javafx.scene.paint.RadialGradient;
import javafx.scene.paint.Stop;
import javafx.scene.Scene;
import javafx.scene.shape.Circle;
import javafx.stage.Stage;
var spotlightX = 0.0;
var spotlightY = 0.0;
var visible = false;
var anImage = Image {
url: "{__DIR__}picture1.jpg"
}
Stage {
title: "Spotlighting"
scene: Scene {
fill: Color.WHITE
content: [
Group {
blendMode: BlendMode.EXCLUSION
content: [
ImageView {
image: anImage
onMouseMoved: function (me: MouseEvent) {
if (me.x > anImage.width - 10 or me.x < 10 or me.y > anImage.height - 10 or me.y < 10) {
visible = false;
} else {
visible = true;
}
spotlightX = me.x;
spotlightY = me.y;
}
},
Group {
id: "spotlight"
content: [
Circle {
visible: bind visible
translateX: bind spotlightX
translateY: bind spotlightY
radius: 60
fill: RadialGradient {
centerX: 0.5
centerY: 0.5
stops: [
Stop { offset: 0.1, color: Color.WHITE },
Stop { offset: 0.5, color: Color.BLACK },
]
}
}
]
}
]
},
]
},
}
Чтобы быть более конкретным:
- Я хочу отобразить цветное изображение в режиме оттенков серого
- При наведении курсора мыши я хочу, чтобы прожектор был цветным, в отличие от остальной части изображения, которое будет отображаться в режиме оттенков серого (как указано в требовании № 1 выше) Прожектор будет двигаться в том же направлении, что и курсор мыши