发布网友 发布时间:2023-12-27 13:29
共1个回答
热心网友 时间:2024-08-18 23:02
m_font.CreateFont (20, 10注意第三个参数是你输出文字的一行与设备x轴的角度,单位0.1度。这里设置-90度,如果你TextOut在(0,0)坐标位置,那么就会从0,0坐标向下竖向显示文字。
还要注意最后的字体加上@特效,另外这样设置对于阿拉伯数字和英文字母,不会使得它们文字方向是竖向的,如果要设置它们和汉字一样的效果,可以先把字符串中的半角字符转换成全角字符,具体的方法,网上 查查。但是最好不转换,因为50 dollars:
5
0
d
o
l
l
...
不如50 dollars旋转90度好看,直观。
至于如何在Rect内垂直居中,我没有更方便的方法,因为这个字体就不是常规的,我的方法是:
先获取该字体模式下DC输出的文字的尺寸CSize szie = ...;
然后再慢慢计算和Rect的关系,包括在那个字符自动换行。
你看着麻烦,其实,只要耐心的分析一下具体算法,应该是不麻烦的。
另外还有个思路:
创建字体CreatePointFont
参数也是加上@修饰字体,这样每一行的文字会是横卧的。
创建CDC memDC
把文字用memDC.DrawText绘制在Rect区域,参数可选垂直居中
然后你把memDC旋转90度,再复制到你的目标设备,只不过这样似乎文字竖向显示了,但是是从右至左的顺序,如果在memDC中输出的文字是从下到上的顺序,那么最后就是从左至右的顺序。