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许可证)