使用VB.NET在Winforms中显示固定宽度的文本

|| 我需要在Paint事件中向.net Winforms窗口中写入一些固定宽度的字体(即Courier New或Consolas)文本-不使用标签或任何其他winforms控件-而是使用图形对象方法将文本呈现到表单的客户区。 即使是固定宽度的字体,我也很难在标题下的不同行上对齐文本。如何精确测量固定宽度字体中单个字符的宽度?在连续的文本输出呼叫中,如何获得2行以水平对齐方式打印输出? 例如: 标题1标题2 简短的其他文字 还要更长一点吗? 我需要一个单独的调用来渲染标题2下的每个文本单元。为了论证-假设第1列项目用黑色打印,第2列用蓝色打印-我们不能使用相同的颜色发短信给整行打电话。     
已邀请:
        
Graphics.MeasureString
可能是您想要的。     
        好的,这是可以使用MeasureString进行工作的代码。一个字符串被打印两次。一次使用一次对DrawString的调用。第二次,逐个字符地循环。我需要的是2个字符串应该看起来相同,但是在绘制第二个字符串时我很难获得每个字符的正确水平位置。您可以将此代码放入表单的Paint事件中进行尝试(将表单字体设置为Consolas或其他固定宽度的字体): 单身昏暗 Dim sf作为StringFormat Dim String1 As String = \“这里没有测试字符串\” 昏暗CharSizeF作为SizeF sf = StringFormat.GenericTypographic CharSizeF = e.Graphics.MeasureString(String1,Me.Font,10000,sf) CharSizeF.Width / = String1.Length e.Graphics.DrawString(String1,Me.Font,Brushes.Black,0,0,sf) 对于每个c作为String1中的char     e.Graphics.DrawString(c.ToString,Me.Font,Brushes.Black,i * CharSizeF.Width,CharSizeF.Height,sf)     我+ = 1 下一个 微软还帮助: http://msdn.microsoft.com/en-us/library/957webty.aspx 获取适合布局中相邻字符串的指标(例如,在实施时 格式的文本),请使用MeasureCharacterRanges方法或其中之一的MeasureString方法 采用StringFormat并传递GenericTypographic。还要确保TextRenderingHint 图形是AntiAlias。     

要回复问题请先登录注册