chwroot
2017-06-13 13:38
采纳率: 16.7%
浏览 5.7k
已采纳

c#的Graphics.DrawString文字换行的问题

用Graphics.DrawString写文字,我想要的效果是,在一个宽度里显示文字,但文字的字数不定,可以实现自动换行及获取到这些文字的高度吗?
我用RectangleF试了,只是是固定的高度,如果文字太多,会显示不全。

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • 战在春秋 2017-06-13 21:23
    已采纳

    调用DrawString函数时,传入一个边框矩形参数,文字会在此范围内自动换行。
    因为字数不定,所以此矩形的高度也应该动态变化。

    代码如下:

    private void panel1_Paint(object sender, PaintEventArgs e)
    {
        string txtDescription = "这是一段非常长的字符串";
        RectangleF descRect = new RectangleF();
        using (Font useFont = new Font("SimSun", 28, FontStyle.Bold)) 
        {
            descRect.Location = new Point(30, 105); 
            descRect.Size = new Size(600, ((int)e.Graphics.MeasureString(txtDescription, useFont, 600, StringFormat.GenericTypographic).Height));
            e.Graphics.DrawString(txtDescription, useFont, Brushes.Black, descRect);
        }
    }
    

    MeasureString函数的用法可参考:

    https://msdn.microsoft.com/en-us/library/system.drawing.graphics.measurestring(v=vs.110).aspx

    用心回答每个问题,如果对您有帮助,请采纳答案好吗,谢谢!

    已采纳该答案
    打赏 评论
  • threenewbee 2017-06-13 15:50
    打赏 评论

相关推荐 更多相似问题