| 发表于:2007-03-08 22:34:45 楼主 |
如下代码所示: private void panel2_paint(object sender, painteventargs e) { string text = "panel1_paint "; font font = new font(this.font.fontfamily, 22); stringformat format = stringformat.generictypographic; format.formatflags = stringformatflags.measuretrailingspaces; characterrange[] ranges ={ new characterrange(0, text.length) }; format.setmeasurablecharacterranges(ranges); region[] region = e.graphics.measurecharacterranges(text, font, new rectanglef(10, 10, int.maxvalue, int.maxvalue), format); rectangle rect = rectangle.round(region[0].getbounds(e.graphics)); e.graphics.drawstring(text, font, brushes.red, rect, format); e.graphics.drawrectangle(pens.blue, rect); } 这段代码用来测试和绘制英文是没有问题的,可是如果测量和绘制的文本中含有中文字符的话,就不正确了。如: private void panel2_paint(object sender, painteventargs e) { string text = "panel1_paint宋体 "; font font = new font(this.font.fontfamily, 22); stringformat format = stringformat.generictypographic; format.formatflags = stringformatflags.measuretrailingspaces; characterrange[] ranges ={ new characterrange(0, text.length) }; format.setmeasurablecharacterranges(ranges); region[] region = e.graphics.measurecharacterranges(text, font, new rectanglef(10, 10, int.maxvalue, int.maxvalue), format); rectangle rect = rectangle.round(region[0].getbounds(e.graphics)); e.graphics.drawstring(text, font, brushes.red, rect, format); e.graphics.drawrectangle(pens.blue, rect); } 这样的话,绘制出来的文本总是缺少最后一个文字。请问怎么才能解决这个问题,万分感谢! |
|
|
|
|