1. 程式人生 > >MFC/VC++中的文字輸出

MFC/VC++中的文字輸出

文字輸出
1:在指定區域輸出文字
  1:使用TextOut(int x,int y,const CString& str);方法
  2:使用DrawText(const CString&str,LPRECT lpRect,UINT nFormat)方法在
指定區域繪圖
   lRect:區域物件
   nFormat:格式  常用DT_CENTER(水平居中)DT_LEFT(居左)DT_RIGHT
       DT_WORD_ELLIPSIS無法完全顯示時,用省略號
示例::
else
{
 CDC *p=GetDC(); //獲取裝置上下文的指標
 CString s="I am the first";
  CRect rect(20,20,200,100);//設定區域
 p->DrawText(s,rect,DT_CENTER);
  s="自然有其發展規律ooooo";
          rect.DeflateRect(30,0);//減小框度
  rect.OffsetRect(0,80);//矩形向下平移
 p->DrawText(s,rect,DT_LEFT|DT_WORD_ELLIPSIS);
  
  CDialog::OnPaint();
}
     
2:設定文字顏色,採用CDC物件的SetTextColor()方法,
           如pDC->SetTextColr(RGB(255,0,0));
3:設定字型
需要建立字型,兩種方法

  1:CreateFont(),該方法引數很多,需要參考

  2:CreatePointFont(int nPointSize, LPCTSTR lpszFACEname,CDC *p=NULL)//該方法引數少
   其中 nPointSize表示字型大小,
   lpszFACEname:表示字型名稱
   p表示裝置上下文的指標,如果是NULL,將以螢幕的裝置上下文作為轉換依據
    
4:在通道中輸出文字
 主要是CDC類中提供的幾個通道函式
BeginPath()開啟通道
EndPath()關閉通道
StrokePath()用畫筆繪製路徑
例項::
else
{
 CPen pen(PS_SOLID,2,RGB(255,0,100));//建立一個畫筆
 CDC *p=GetDC();
 p->SelectObject(&pen);  //選中畫筆
 p->BeginPath();//開啟一個通道
        p->SetBkMode(TRANSPARENT);   //設定相應的模式
 CFont *m=p->SelectObject(&m_font);  //選中建立的字型
 p->TextOut(60,100,"慢而穩,賽必勝");
 p->EndPath(); //關閉通道
 p->StrokePath();//用當前的畫筆繪製路徑
 pen.DeleteObject();
 p->SelectObject(m);
 CDialog::OnPaint();
}

5在影象背景上輸出透明文字
呼叫CDC的int SetBkMode(int nbBkMode)方法設定裝置上下文的背景模式
    nbBkMode=TRANSPARENT表示透明
    nbBkMode=OPAQUE表示已當前的背景顏色填充背景