关于JAVA中的g.drawString()方法
我在面版上画一段文字如 "eeeeeeeeee ";
为什么,字体很小的时候如:fontSize = 1;
g.drawString( "fffffffffffffffffffffffffffffffff ");画面上不显示,
但g.drawString( "wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww ");却可以显示,我知道这跟文字的宽度有关系,W比较胖,所以可以显示,F太苗条了,就不显示.我通过例子证明了这点,但不明白为什么这样,怎么解决这个问题,有没有这方面的专家给指导一下,谢谢:
参考代码:
/**
* テキスト形にテキストを描写する
*/
public void drawFrame(Graphics g) {
//Modify by zuochuanmin on 2007/04/09 start
//更原因:メモのフォントサイズを24にすると、文字がメモよりはみ出した
int fontSize = (int)(Integer.parseInt(PropertiesDefine.CommentDefine.fontSize)*MainDrawingView.getInstance().scale);
if(fontSize <=0){
fontSize = 1;
}
fFont = new Font(fFont.getName(), fFont.getStyle(), fontSize);
g.setFont(fFont);
if (PropertiesDefine.CommentDefine.fontColor != null){
g.setColor(stringToColor(PropertiesDefine.CommentDefine.fontColor));
}
int length = (int)(10*MainDrawingView.getInstance().scale);
// 文字列の描画理
char[] chars = fText.toCharArray();
FontMetrics fm = g.getFontMetrics(getFont());
int top = fOriginY + length; //Modify by zuochuanmin on 2007/1/8
g.setFont(fFont);
//System.out.println( "draw frame length: "+length);
int mysixedWidth = fWidth -length*2;
int left = fOriginX + length; //Modify by zuochuanmin on 2007/1/8
int curWidth = 0;
int temp = top; //Add by zuochuanmin on 2007/01/23
Dimension size = null;
double maxHeight = 0;
g.drawString( "ffffffffffffffffffffffff ", fOriginX, fOriginY);
for(int i = 0; i < chars.length; i++){
// 文字のサイズ
char ch = chars[i];
size = fFont.createGlyphVector(((Graphics2D) g).getFontRenderContext(),
" " + ch).getVisualBounds().getBounds().getSize();
double tempH = size.getHeight();
if( maxHeight <tempH ){
maxHeight = tempH;
}
}
if(maxHeight <=0){
maxHeight=1;
}
int lineCount = 0;
for (int i = 0; i < chars.length; i++){
// 文字のサイズ
char ch = chars[i];
int w = fm.charWidth(ch);
if(w <=0){
w=1;
}
if( i==0 ){
top += maxHeight;
//System.out.println( "maxHeight: " + maxHeight);
}
// 改行の理
curWidth = curWidth + w;
//Modify by zuochuanmin on 2007/1/8 end
//Modify by zuochuanmin on 2007/1/8 start
if (curWidth > mysixedWidth){
curWidth = w;
left = fOriginX + length; //Modify by zuochuanmin on 2007/01/23
top = top + (int)maxHeight + (int) (3 * MainDrawingView.getInstance().scale);
lineCount++;
}
//Modify by zuochuanmin on 2007/1/8 end
//Modify by zuochuanmin on 2007/01/23 start
if ((top - temp) > (fHeight - length*2)){
break;
}
//Modify by zuochuanmin on 2007/01/23 end
// 文字列を描画する
g.drawString( " " + chars[i], left, top);
//g.drawString( "w ", left, top);
left += w;
((Graphics2D) g).setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,
RenderingHints.VALUE_TEXT_ANTIALIAS_DEFAULT);
}
[解决办法]
不是高手,也帮你顶
[解决办法]
可以去找JAVA API认真看看