在 JavaFX 中禁用 ImageView 抗锯齿功能

tom*_*mmY 5 java javafx image-processing antialiasing

ImageView在 JavaFX 中制作了一个并将像素艺术加载到其中。我放大了,但我无法清楚地看到艺术的像素。问题应该出在抗锯齿上。所以我需要清楚地看到第二个链接上的像素。如何关闭抗锯齿功能?

我尝试过img1.setSmooth(false);

我在 JavaFX 中做了什么: 图片1

它应该是什么样子: 图片2 //在 piskel 中预览

这是我的代码:

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class Main extends Application {
@Override public void start(Stage primaryStage) {
    AnchorPane root = new AnchorPane();
    StackPane hb = new StackPane();
    Image image = new Image("pixelart.png");
    ImageView img = new ImageView(image);
    img.setFitWidth(500);
    img.setFitHeight(500);
    img.setSmooth(false);
    hb.getChildren().add(img);
    root.getChildren().addAll(hb);
    Scene scene = new Scene(root,800,400);
    primaryStage.setScene(scene);
    primaryStage.show();    
}
public static void main(String[] args) {launch(args);}
}
Run Code Online (Sandbox Code Playgroud)

像素艺术.png: 图3

tra*_*god 6

一种方法是在构建Image. 将构造函数的最后一个参数, smooth, 设置为false

Image image = new Image("pixelart.png", 400, 400, true, false);
Run Code Online (Sandbox Code Playgroud)

图像

经测试:

import javafx.application.Application;
import javafx.scene.Scene;
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 primaryStage) {
        StackPane root = new StackPane();
        Image image = new Image("pixelart.png", 400, 400, true, false);
        ImageView view = new ImageView(image);
        root.getChildren().add(view);
        Scene scene = new Scene(root, 450, 450);
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

Run Code Online (Sandbox Code Playgroud)