[英]How to convert an image into a shape in Java?
我目前正在研究一个股票市场计划,教学生如何与股票市场互动。 我现在正在处理的一个问题围绕着效率和内存问题。 我在 adobe illustrator 中制作了我所有的 2D 图标(例如设置图标、投资组合图标等) ,我将这些文件导出为 png 文件,然后将它们放入我的程序中。 我目前使用JavaFX,JavaFX的一个特性就是所谓的imageView,它是一种处理图像打开和查看的方法。
所以假设用户想在游戏中按下设置图标,我想在用户悬停在该图标上时将设置图标更改为更深或更浅的颜色,以便为用户提供更好的用户体验(UX)目前,我使用两个不同的图像并将一个从框架中删除,然后用另一个替换,这是非常低效的。
我知道 JavaFX 有一个 Shape 类,它继承了许多方法,例如Fill或setFill ,但这些方法只能影响Shape类的方法。
我的问题是,“如何将导入到项目中的图像转换为可以使用 setFill 和 Fill on 等方法的图像”
如果您只想进行基本更改,例如使图标变暗或变亮,您可以查看 javaFx 的效果部分,您可以在此处阅读相关内容,或者您可以按照评论中的建议将图像导入为 SVG
如果您打算使用效果来实现,您可以使用 ColorAdjust Effect 通过将亮度值设置为负值来实现悬停时变暗的效果(ColorAdjust 中的亮度范围在 -1 和 +1 之间,其中 0 是默认值) 如下例所示
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.effect.ColorAdjust;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class Main extends Application {
@Override
public void start(Stage s) {
ImageView image = new ImageView(new Image("img.png"));
ColorAdjust darker = new ColorAdjust();
darker.setBrightness(-.3);
image.setOnMouseEntered(e-> {
image.setEffect(darker);
});
image.setOnMouseExited(e-> {
image.setEffect(null);
});
s.setScene(new Scene(new StackPane(image)));
s.show();
}
public static void main(String[] args) {
launch(args);
}
}
更改图像的颜色可能涉及使用 ColorAdjust 通过设置色调值来调整色调
ColorAdjust hueShift = new ColorAdjust();
hueShift.setHue(-.3);
image.setOnMouseEntered(e-> {
image.setEffect(hueShift);
});
image.setOnMouseExited(e-> {
image.setEffect(null);
});
您可以通过将效果设置为其他效果的输入来组合效果,例如,如果您想使节点变暗并同时对其进行模糊处理,则可以将模糊效果设置为变暗 colorAdjust 的输入
GaussianBlur blur = new GaussianBlur();
blur.setRadius(10);
ColorAdjust darker = new ColorAdjust();
darker.setBrightness(-.3);
darker.setInput(blur);
image.setOnMouseEntered(e-> {
image.setEffect(darker);
});
image.setOnMouseExited(e-> {
image.setEffect(null);
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.