如何在指定矩形中旋轉顯示文字
發表于:2007-07-14來源:作者:點擊數:
標簽:
徐景周 /////////////////////////////////////////////////////// //說明: //在矩形框中旋轉方式顯示文字,jingzhou xu //參數: //pDC:DC指針 //str:顯示文字 //rect:顯示范圍 //angle:旋轉角度 //nOptions:ExtTextOut()中相應設置ETO_CLIPPED 和 ETO_OPA
徐景周
///////////////////////////////////////////////////////
//說明:
// 在矩形框中旋轉方式顯示文字,jingzhou xu
//參數:
// pDC: DC指針
// str: 顯示文字
// rect: 顯示范圍
// angle: 旋轉角度
// nOptions: ExtTextOut()中相應設置<ETO_CLIPPED 和 ETO_OPAQUE>
///////////////////////////////////////////////////////
void DrawRotatedText(CDC* pDC, const CString str, CRect rect,
double angle, UINT nOptions)
{
//按比例轉換角度值
double pi = 3.141592654;
double radian = pi * 2 / 360 * angle;
//獲取顯示文字中心點
CSize TextSize = pDC->GetTextExtent(str);
CPoint center;
center.x = TextSize.cx / 2;
center.y = TextSize.cy / 2;
//計算顯示文字新的中心點
CPoint rcenter;
rcenter.x = long(cos(radian) * center.x - sin(radian) * center.y);
rcenter.y = long(sin(radian) * center.x + cos(radian) * center.y);
//繪制文字
pDC->SetTextAlign(TA_BASELINE);
pDC->SetBkMode(TRANSPARENT);
pDC->ExtTextOut(rect.left + rect.Width() / 2 - rcenter.x,
rect.top + rect.Height() / 2 + rcenter.y,
nOptions, rect, str, NULL);
}
用法:
DrawRotatedText (pDC,”VC
知識庫”,CRect(100,100,300,300),15, ETO_CLIPPED);
原文轉自:http://www.kjueaiud.com