今天实验课需要用到文字竖排的功能,在网上找了一下资料,自己也总结了一下。得到两种方法。
方法一:利用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函数即可,不需要修改别的地方。