1、创建垂直走向的字体
转自:https://blog.csdn.net/wxb1553725576/article/details/17104781
今天实验课需要用到文字竖排的功能,在网上找了一下资料,自己也总结了一下。得到两种方法。
方法一:利用CFont类实现文字竖排
CFont font;
VERIFY(font.CreateFont(
12, // nHeight
0, // nWidth
900, // nEscapement,设置文字的显示角度,注意单位为0.1度
-90, //
FW_NORMAL, // nWeight
FALSE, // bItalic
FALSE, // bUnderline
0, // cStrikeOut
ANSI_CHARSET, // nCharSet
OUT_DEFAULT_PRECIS, // nOutPrecision
CLIP_DEFAULT_PRECIS, // nClipPrecision
DEFAULT_QUALITY, // nQuality
DEFAULT_PITCH | FF_SWISS, // nPitchAndFamily
"Arial") ); // lpszFacename
// Do something with the font just created...
CClientDC dc(this);
CFont* def_font = dc.SelectObject(&font);
dc.TextOut(25, 25, "Hello", 5);
dc.SelectObject(def_font);
// Done with the font. Delete the font object.
font.DeleteObject();
方法二:本质上还是CFont
CFont* pFont = pDC->GetCurrentFont();
LOGFONT logFont ;
pFont->GetLogFont(&logFont);
logFont.lfEscapement = 900 ;//900/10 = 90
HFONT hFont = CreateFontIndirect(&logFont);
pDC->SelectObject(hFont);
pDC->TextOut(200,200,"VC中如何把一串文字旋转90度显示的?");
以上两种方法都只需要修改OnDraw函数即可,不需要修改别的地方。
2、设置垂直走向字体显示的位置
CDC函数中显示字体方式有DrawText()、TextOut两个函数,都可以设置字体的对齐方式。
DrawText函数第三个参数设置字体在CRect中的位置,但是在字体旋转之后,由于字体旋转时是以字符串的左上角为旋转中心进行旋转的,所以DrawText函数对于旋转字体不好用
DrawText函数参数:https://www.cnblogs.com/qq76211822/p/4810779.html
DrawText函数使用示例:https://blog.csdn.net/qq_33001647/article/details/61925220
TextOut函数参数中没有设置字符串对其方式的部分,但是可以在调用TextOut之前,调用CDC函数SetTextAlign()函数设置对齐方式,举例说明:pDC->SetTextAlign( TA_RIGHT | TA_TOP ),设置TextOut中的坐标为字符串的右上角
TextOut函数参数:https://baike.baidu.com/item/SetTextAlign/6384220?fr=aladdin
另外注意:可以在字符串中加入\n实现字符串的换行