2016-10-30 15 views
1

我知道這是可能使用BufferedImagegetGraphics圖像適用標準的文本:的Java:圖像上應用幾何變換文本

Graphics g = image.getGraphics(); 
g.setFont(g.getFont().deriveFont(30f)); 
g.drawString("Hello World!", 100, 100); 
g.dispose() 

我試圖創建一個應用程序,其中我會能夠與幾何變換(如旋轉,剪切,投影),它看起來像這樣,我終於可以得到圖像應用文本:

ImageSample

是否有與幾何應用文本的一般方式轉化,就像在上面的圖像?

+0

你想使用什麼庫,Swing? – user1803551

+0

它可以是鞦韆或任何其他認爲標準 – SomethingSomething

回答

2

JavaFX自Java 8以來被認爲是「標準」,並且內置了易於使用的JavaFX。您可以將任何轉換應用於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); 
    } 
} 

enter image description here

Applying Effects to Text查看更多信息。

+0

令人驚歎!謝謝! – SomethingSomething

+0

雖然你是如何獲得相同的圖像? jux好奇 – Elltz

+0

@Elltz https://en.wikipedia.org/wiki/Lenna – user1803551