【发布时间】:2023-04-09 13:18:01
【问题描述】:
我想将文本绘制到 GDI 表面并将该文本逆时针旋转 90 度。我更喜欢使用 DrawText 来绘制文本,因为它支持回车。我尝试使用带有 lfEscapement 的字体(请参见下面的代码),但该行没有旋转 - 一条线被渲染到另一条线上。有没有可能旋转文本?还是不旋转渲染并旋转整个设备上下文?
普通文本布局:
旋转(期望的结果):
case WM_PAINT:
{
hdc = BeginPaint(hWnd, &ps);
LOGFONT lf = {0};
HANDLE hFont;
ZeroMemory(&lf, sizeof(LOGFONT));
lf.lfWeight = FW_NORMAL;
lstrcpy(lf.lfFaceName, _T("Tahoma"));
lf.lfEscapement = 90;
lf.lfHeight = 30;
hFont = CreateFontIndirect (&lf);
hFont = (HFONT)SelectObject (ps.hdc, hFont);
RECT RectBody = {10,lf.lfHeight+10,::GetSystemMetrics(SM_CXSCREEN)-10,::GetSystemMetrics(SM_CYSCREEN)-lf.lfHeight-20};
{
ScopedLock lock(me->m_mutex);
DrawText (ps.hdc, me->GetMessageString().c_str(), (int)me->GetMessageString().length(), &RectBody, 0);
}
hFont = (HFONT)SelectObject (ps.hdc, hFont);
DeleteObject (hFont);
EndPaint(hWnd, &ps);
break;
}
【问题讨论】: