我目前正在从事一个股票市场项目,教学生如何与股票市场互动。我现在正在研究的一个问题是效率和记忆问题。我将我所有的2D图标(如设置图标、组合图标等)都放在adobe插画家中,我将这些文件导出为png文件,并将它们扔到我的程序中。我目前使用JavaFX,JavaFX的一个特性是所谓的imageView,它是一种处理图像打开和查看的方法。
因此,假设用户希望在游戏中按下 settings 图标,当用户悬停在该图标上时,我希望将设置图标更改为更深或更浅的颜色,以便为用户提供更好的用户体验(UX),我现在使用两幅不同的图像,从框架中删除其中一幅,并替换为另一幅,这是非常低效率的。
我知道JavaFX有一个Shape类,它继承了许多方法,比如Fill或setFill,但是这些方法只能影响Shape类的方法。
我的问题是,“如何将导入到项目中的图像转换为可以使用setFill和填充之类的方法”。
发布于 2020-01-14 18:10:12
如果你只想做一些基本的改变,比如使你的图标变暗或闪电,你可以看看javaFx的效果部分,你可以读到它的这里,或者你可以像注释中建议的那样导入你的图像。
如果您计划使用效果执行此操作,则可以使用ColorAdjust效果实现暗悬停效果,方法是将亮度值设置为负值( 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);
});https://stackoverflow.com/questions/59738458
复制相似问题