需求:java
1.用戶輸入文字,根據外部字體,將文字生成圖片字體
2.輸出的文字須要居中在圖片中顯示spa
遇到的問題:code
1.如何導入外部字體?使用Java的Font類,全部的字體都是系統安裝過的blog
2.每次用戶輸入的字符串長度,圖片的尺寸是能夠改變的,若是作到每次計算出文字居中的x軸,y軸?圖片
解決辦法:ip
1.如何導入外部字體?使用Java的Font類,全部的字體都是系統安裝過的字符串
import java.awt.Font; import java.io.File; import java.io.FileInputStream; public class Loadfont { public static Font loadFont(String fontFileName, float fontSize) //第一個參數是外部字體名,第二個是字體大小 { try { File file = new File(fontFileName); FileInputStream aixing = new FileInputStream(file); Font dynamicFont = Font.createFont(Font.TRUETYPE_FONT, aixing); Font dynamicFontPt = dynamicFont.deriveFont(fontSize); aixing.close(); return dynamicFontPt; } catch(Exception e)//異常處理 { e.printStackTrace(); return new java.awt.Font("宋體", Font.PLAIN, 14); } } public static java.awt.Font Font(){ String root=System.getProperty("user.dir");//項目根目錄路徑 Font font = Loadfont.loadFont(root+"/data/PRISTINA.ttf", 18f);//調用 return font;//返回字體 } public static java.awt.Font Font2(){ String root=System.getProperty("user.dir");//項目根目錄路徑 Font font = Loadfont.loadFont(root+"/data/XXXX.ttf", 18f); return font;//返回字體 } }
2.每次用戶輸入的字符串長度,圖片的尺寸是能夠改變的,若是作到每次計算出文字居中的x軸,y軸? get
[使用FontMetrics類]string
FontMetrics類的使用請參考:http://mikewang.blog.51cto.com/3826268/871765
/**獲取起始x軸*/ int strLen = fm.stringWidth(str); int x = (width - strLen)/2; /** 用於得到垂直居中y */ Rectangle clip = g.getClipBounds(); FontMetrics fm = g.getFontMetrics(font); int ascent = fm.getAscent(); int descent = fm.getDescent(); int y = (clip.height - (ascent + descent)) / 2 + ascent;