如何在JavaFX中更改图像的长宽比?
javafx.scene.image.Image类用于图像加载到JavaFX应用程序。这支持BMP,GIF,JPEG和PNG格式。
JavaFX提供了一个名为javafx.scene.image.ImageView的类,该类用于显示加载的图像。
ImageView类的booleanRatio属性(布尔值)指定在使用当前ImageView对象显示图像时,是否应保留图像的高宽比。您可以使用setPreserveRatio()方法将值设置为此属性。
默认情况下,此属性的值为true,即,即使您更改图像的宽度或高度,显示的图像的纵横比也将与源相同。
更改图像的宽高比-
通过传递所需图像的URL(字符串)作为参数来实例化Image类。
实例化ImageView类。
通过将图像对象作为参数传递给setImage()方法来为其设置图像。
使用setPreserveRatio()方法将prepareRatio属性设置为false。
现在,如果使用或更改图像的高度,则其纵横比将被篡改。
示例
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
public class PerspectiveRatioExample extends Application {
public void start(Stage stage) throws IOException {
//创建图像对象
InputStream stream = new FileInputStream("D:\\images\\elephant.jpg");
Image image = new Image(stream);
//创建图像视图
ImageView imageView1 = new ImageView(image);
//设置图像视图参数
imageView1.setX(170);
imageView1.setY(10);
imageView1.setFitWidth(270);
imageView1.setPreserveRatio(true);
//创建图像视图
ImageView imageView2 = new ImageView(image);
//设置图像视图参数
imageView2.setX(10);
imageView2.setY(180);
imageView2.setFitWidth(580);
imageView2.setFitHeight(160);
imageView2.setPreserveRatio(false);
//设置场景对象
Group root = new Group(imageView1, imageView2);
Scene scene = new Scene(root, 595, 350, Color.BEIGE);
stage.setTitle("Perspective Ratio Example");
stage.setScene(scene);
stage.show();
}
public static void main(String args[]) {
launch(args);
}
}输出结果