我想用java寫一個水印程序,所以我發現相同的this piece of code。Java - 在圖像中正確繪製多行字符串
我做我自己適應我的目的,像這樣(全部源:https://gist.github.com/1373080/)
/**
*
* This method converts a multiline string into an ArrayList of Strings
* Each item on the array list is a line of the string.
* @param str A multiline string
* @return An ArrayList of strings , a string per line of text
* @see java.util.ArrayList
*/
private static ArrayList<String> convertStringToLineString(String str){
ArrayList<String> string = new ArrayList<String>();
String s = new String();
char [] ca = str.toCharArray();
for(int i=0;i<ca.length;i++){
if(ca[i] == '\n'){
string.add(s);
s = new String();
}
s += ca[i];
}
return string;
}
字符串被繪製像這樣
int x =(img.getIconWidth() - (int) rect.getWidth())/2,
y =(img.getIconHeight() - (int) rect.getHeight())/2;
ArrayList<String> watermarks = convertStringToLineString(watermark);
for (String w : watermarks){
g2d.drawString(w,x,y);
y+=20;
}
的問題,我面對的是一個字符串如日曆
November 2011
Su Mo Tu We Th Fr Sa
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
其中包含多行不會被繪製pr正常運行。
例
PS:我用java,即使是使用其他庫的那些願意接受任何類型的解決方案。
使用下面這行工作
g2D.setFont(new Font("Monospaced", Font.PLAIN, 12));
但必須有一個更優雅的解決方案,對於任何類型的字體作品。
無關,但是那個場景從哪裏來? – jkschneider
@jkschneider:多數民衆贊成真的無關,任何方式在這裏是原始圖像的鏈接http://wallbase.cc/wallpaper/954211 – Gautam