WEB开发网      婵犵數濞€濞佳囧磹婵犳艾鐤炬い鎰堕檮閸嬬喐銇勯弽銊с€掗梻鍕閺岋箑螣娓氼垱笑闂佽姘﹂褔婀佸┑鐘诧工妤犲憡绂嶉崜褏纾奸弶鍫涘妼缁楁岸鏌熷畡鐗堝殗闁诡喒鏅犲畷褰掝敃閵堝棙顔忔繝鐢靛仦閸ㄥ爼骞愰幘顔肩;闁规崘绉ぐ鎺撳亹闁绘垶锕╁Λ鍕⒑閹肩偛濡奸悗娑掓櫇缁顓兼径妯绘櫇闂佹寧绻傞弻濠囨晝閸屾稓鍘甸柣搴㈢⊕閿氶柣蹇ョ稻缁绘繃绻濋崘銊т紝闂佽鍨伴崯鏉戠暦閻旂⒈鏁傞柛鈾€鏅欑槐妯衡攽閻愬樊鍤熷┑顔藉劤铻為柛鏇ㄥ墯閸欏繘鏌嶉崫鍕櫣缂佲偓婢跺绠鹃柟瀛樼箘閿涘秵顨ラ悙顏勭伈闁诡喖缍婂畷鎯邦槻婵℃彃顭烽弻娑㈠Ω閵夈儺鍔夌紓浣稿€哥粔褰掑极閹剧粯鏅搁柨鐕傛嫹 ---闂傚倷鐒︾€笛兠洪埡鍛闁跨噦鎷�
开发学院WEB开发Jsp 在图形编程中用TextLayout精确绘制字符串 阅读

在图形编程中用TextLayout精确绘制字符串

 2008-01-05 08:34:41 来源:WEB开发网 闂傚倷绶氬ḿ褍螞閹绢喖绠柨鐕傛嫹闂傚倷绀侀幉锟犲垂閻㈠灚宕查柟鎵閸庡秵銇勯幒鎴濃偓鐢稿磻閹炬枼妲堟繛鍡楃С濞岊亞绱撻崒姘扁枌闁瑰嚖鎷�婵犵數濮幏鍐川椤撴繄鎹曢梻渚€娼уú銈吤洪妸鈺佺劦妞ゆ帊鑳堕埊鏇㈡煏閸モ晛浠х紒杈╁仱閺佹捇鏁撻敓锟�闂傚倷绶氬ḿ褍螞閹绢喖绠柨鐕傛嫹  闂傚倷鑳舵灙缂佺粯顨呴埢宥夊即閵忕姵鐎梺缁樺姈椤愮厧鈽夊Ο閿嬬€婚梺褰掑亰閸撴稑鈻斿鑸碘拺闁告稑饪村▓鏃€绻涚仦鍌氬闁崇粯鎹囬獮瀣攽閹邦剚顔傛俊鐐€栧濠氬储瑜忛幉鎾晸閿燂拷
核心提示:作者:家居猫在编写 java 图形程序时,大家通常是用 java.awt.Graphics.drawString( int x, int y ) 来画字符串,在图形编程中用TextLayout精确绘制字符串,但是其效果往往不能满足我们的要求,其实,"j"多占了下面的一部分,TextLayout tm

  作者:家居猫

在编写 java 图形程序时,大家通常是用 java.awt.Graphics.drawString( int x, int y ) 来画字符串。但是其效果往往不能满足我们的要求。
其实,Java2D提供了更先进的绘制字符串的方法,用 TextLayout 可以绘制出相当令人满足的效果。下面是一个例子供大家参考:

//设置字体
Font mFont = new Font( font, style, (int)size );

//保存当前的着色参数
RenderingHints rhs = g.getRenderingHints();

//在 linux 画中文字符时,打开抗锯齿功能可能会影响显示效果。
//所以这里将抗锯齿功能关掉。你也可以经过测试来决定是否关闭此功能。
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_OFF);

//下面这段代码测试字符串可能显示的宽度。假如宽度大于 limitWidth,则用 ... 代替多余的部分。
if (limitWidth != -1) {
AttributedString as = new AttributedString(buf);
as.addAttribute( TextAttribute.FONT, mFont );
TextMeasurer tm = new TextMeasurer(as.getIterator(), g.getFontRenderContext());
int limitIndex = tm.getLineBreakIndex(0, limitWidth);
if (buf.length() > limitIndex) {
buf = buf.substring(0, limitIndex) + "...";
}
}

//构造 TextLayout
TextLayout tl = new TextLayout(buf, mFont, g.getFontRenderContext());

//构造下面这个 TextLayout 主要是为了得到英文字符串的全高度。
//因为 "abc" 与 "obj" 所占的高度是不一样的,"j"多占了下面的一部分。
TextLayout tmptl = new TextLayout("Ig", mFont, g.getFontRenderContext());
Rectangle2D tmPRt = tmptl.getBounds();

//恢复旧的着色参数
g.setRenderingHints(rhs);

//画字符串,注重这里的 x, y 坐标是 TextLayout 所占矩形框的左上角坐标。
tl.draw(g, x, (float)(y + tmprt.getHeight()));

--摘自 http://www.javaidea.net

Tags:图形 编程 中用

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接