OnPaint()处理函数:
CPaintDCdc(this);
CRectrcRect;
GetClientRect(&rcRect);
if( m_strText.IsEmpty()==FALSE){
CFontfont;
dc.SetBkMode(TRANSPARENT);
dc.SetTextColor(m_clrText);
m_lffont.lfHeight= MulDiv(14, -dc.GetDeviceCaps(LOGPIXELSY),72);
//设定新的旋转角度
m_lffont.lfEscapement= m_nGradient*10;
//创建字体并选进设备场景
font.CreateFontIndirect(&m_lffont);
CFont* pOldFont=dc.SelectObject(&font);
CSizefsize= dc.GetTextExtent(m_strText);
doublefhudu= m_nGradient*M_PI/180;
intnNewWidth= (int)ceil( fsize.cx* cos(fhudu) );
intnNewHeight= (int)ceil( fsize.cx* sin(fhudu) );
intnDeltaWidth=(int)ceil( fsize.cy* sin(fhudu) );
intnDeltaHeight=(int)ceil( fsize.cy* cos(fhudu) );
dc.TextOut( (rcRect.right-nNewWidth-nDeltaWidth)/2,(rcRect.bottom+nNewHeight-nDeltaHeight)/2,m_strText);
//分行多行显示
//int height = dc.DrawText(m_strText,rcRect,DT_CENTER |DT_WORDBREAK | DT_CALCRECT | DT_EDITCONTROL); // 获得文本高度
//rcRect.DeflateRect(0,(rcRect.Height() - height) / 2); // 改变rect
//dc.DrawText(m_strText,rcRect, DT_CENTER | DT_EDITCONTROL| DT_WORDBREAK);
//原来字体
dc.SelectObject(pOldFont);
font.DeleteObject();
}
文档信息
- 本文作者:zhupite
- 本文链接:https://zhupite.com/program/%E4%B8%8D%E4%BD%BF%E7%94%A8gdi+%E7%BB%98%E5%88%B6%E6%97%8B%E8%BD%AC%E6%96%87%E5%AD%97.html
- 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)