C#-C#里label的text的文字竖直显示

C#-C#里label的text的文字竖直显示

甜柠檬 发布于 2017-07-29 字数 282 浏览 1014 回复 2

C#里,我想使label的text的文字是竖直显示的(包括标点符号也是竖直样式),怎么解决?
如下图:

请输入图片描述

重点:显示的文本里的标点符号是自动成为图中所示,而不是手动用特殊符号代替。

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

偏爱自由 2017-10-27 2 楼

你想要的效果应该是这样的吧

label 本身没有直接设置竖直显示的属性,不过可以通过继承 label ,重新绘制 text,在绘制的时候,把世界坐标进行旋转90度,就可以绘制出这种效果了。

------------更新-----------------
原来没有搞清楚Lz的题目, 更新一下
就是只有标点符号需要旋转,而普通文字不旋转,这种情况还是无法直接设置的,一样必须重写 label,但是在绘制的时候,要做判断,如果是标点符号就旋转,如果不是就不旋转。
旋转有两种方法,一种是旋转坐标,一种是旋转 Painter ,这里推荐选装 Painter。

虐人心 2017-09-16 1 楼

第一种是把Label的AutoSize属性设为False,手动修改Label的大小.这样的好处是会因内容的长度而自动换行,但是当内容的长度超过所设定的大小时,多出的内容就会无法显示.因此,这种方法适合于基本确定内容长度的时候使用.

第二种是把Label的Dock设为FILL,同时将AutoSize属性设为False,这种方法可将上面所说的缺点修正,但是同时Label会将其它控件的位置霸占,影响布局.因此,在使用该方法时,最好给Label加上个Panel或GroupBox控件.

第三种是通过判断内容的长度,动态设置Label的大小.具体程序如下(Label控件取名为Label1,显示内容的字符串为str):

int LblNum = str.Length; //Label内容长度
int RowNum = 10; //每行显示的字数
float FontWidth = label1.Width / label1.Text.Length; //每个字符的宽度
int RowHeight=15; //每行的高度
int ColNum = (LblNum - (LblNum / RowNum) * RowNum) == 0 ? (LblNum / RowNum) : (LblNum / RowNum) + 1; //列数
label1.AutoSize = false; //设置AutoSize
label1.Width = (int)(FontWidth * 10.0); //设置显示宽度
label1.Height = RowHeight * ColNum; //设置显示高度