我知道可以使用BufferedImage
getGraphics
{/ 1>}在图像上应用标准文字:
Graphics g = image.getGraphics();
g.setFont(g.getFont().deriveFont(30f));
g.drawString("Hello World!", 100, 100);
g.dispose()
我正在尝试创建一个应用程序,在其中我将能够应用具有几何变换的文本(例如旋转,剪切,投影),这样我最终可以获得如下图像:
是否有一种通用方法来应用具有几何变换的文本,如上图所示?
答案 0 :(得分:2)
JavaFX被认为是标准的"从Java 8开始就具有这种易于使用的内置功能。您可以将任何转化应用于Text
对象,并使用StackPane
将其置于图像之上。
public class MyApp extends Application {
@Override
public void start(Stage stage) throws Exception {
ImageView lena = new ImageView(new Image("main/Lenna.png")); //URL to image
Text text1 = new Text("Hello World!");
text1.setRotate(30);
text1.setTranslateX(100);
text1.setTranslateY(-100);
text1.setFont(Font.font("Veranda", FontWeight.BOLD, 36));
text1.setFill(Color.BLUE);
Text text2 = new Text("Hello Lenna!");
PerspectiveTransform perspectiveTrasform = new PerspectiveTransform();
perspectiveTrasform.setUlx(10);
perspectiveTrasform.setUly(10);
perspectiveTrasform.setUrx(300);
perspectiveTrasform.setUry(40);
perspectiveTrasform.setLrx(300);
perspectiveTrasform.setLry(60);
perspectiveTrasform.setLlx(10);
perspectiveTrasform.setLly(90);
text2.setEffect(perspectiveTrasform);
text2.setFont(Font.font("Veranda", FontWeight.BOLD, 36));
StackPane pane = new StackPane(lena, text1, text2);
Scene scene = new Scene(pane);
stage.setScene(scene);
stage.show();
}
public static void main(String[] args) throws Exception {
launch(args);
}
}
有关详细信息,另请参阅Applying Effects to Text。