如何在指定矩形中旋转显示文字

王朝c/c++·作者佚名  2006-01-06
窄屏简体版  字體: |||超大  

徐景周

///////////////////////////////////////////////////////

//说明:

//  在矩形框中旋转方式显示文字,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);

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航