VC中文字旋转实现方式:
1、不使用Graphics,直接用CDC绘制
方法:编辑字体,然后DC选中这个字体,即可实现
具体:
CFont* pFont = pDC->GetCurrentFont(); LOGFONT logFont ; pFont->GetLogFont(&logFont); logFont.lfEscapement = 600;//900/10 = 90 wcscpy(logFont.lfFaceName,L"楷体_GB2312"); HFONT hFont = CreateFontIndirect(&logFont); pDC->SelectObject(hFont); pDC->TextOut(200,200,L"VC中如何把一串文字旋转90度显示的?");
这里需要注意的地方:LOGFONT结构中有两个内容需要设置
lfEscapement 为旋转的角度,以1/10度为单位
lfFaceName 为字体名称,用系统默认的@System字体是不能实现旋转的,这里选择了楷体,宋体也可以
2、使用Graphics类
这个类提供了TranslateTransform、RotateTransform实现坐标系的平移及旋转
下面的代码实现了以(200,200)为原点旋转 30度的操作
graphic.TranslateTransform(200,200); graphic.RotateTransform(360 - 30); graphic.DrawString(str, str.GetLength(), &myFont, PointF(0,0), NULL, &blackBrush); graphic.RotateTransform(30 - 360); graphic.TranslateTransform(-200,-200);
记得在绘制结束后把旋转恢复,不然之后的绘制都带着平移跟旋转