【问题标题】:Disable ImageView Anti-Aliasing in JavaFX [duplicate]在 JavaFX 中禁用 ImageView 抗锯齿 [重复]
【发布时间】:2023-04-06 18:49:02
【问题描述】:

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

我试过img1.setSmooth(false);

我在 JavaFX 中所做的:

它应该是什么样子的: //preview made in 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);}
}

像素艺术.png:

【问题讨论】:

    标签: java image-processing javafx antialiasing


    【解决方案1】:

    一种方法是在构造Image 时关闭平滑。将constructorsmooth 的最后一个参数设置为false

    Image image = new Image("pixelart.png", 400, 400, true, false);
    

    经测试:

    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);
        }
    }
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-30
      • 2012-12-13
      相关资源
      最近更新 更多