我想將文本繪製到GDI表面並將此文本逆時針旋轉90度。我寧願使用DrawText來繪製文本,因爲它支持回車。我試圖在lfEscapement中使用字體(請參閱下面的代碼),但不會旋轉線條 - 其中一行會被渲染。有沒有可能旋轉文字?或者不旋轉渲染而旋轉整個設備上下文?使用GDI將文本旋轉90度
普通的文本佈局:
旋轉(期望的結果):
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;
}
感謝您的回答,我嘗試了TA_BASELINE,結果非常奇怪(文本在屏幕頂部呈現)。我看到了codeproject的關鍵字。我看到的唯一問題是我需要自己處理回車/線路長度。 – 2010-08-27 13:27:56
只是另一個建議,在codeguru的這個鏈接上,有一些旋轉位圖的例子。您可以將文本水平地繪製在兼容DC的位圖中,並將其在主DC中旋轉。 http://www.codeguru.com/cpp/g-m/bitmap/specialeffects/article.php/c1743 – 2010-08-27 13:38:14