MFC如何实现带图片背景的字

解决方案 »

  1.   

    这个一样啊,你画背景的时候,指定rect得了,将你要写文字的区域画上背景
      

  2.   

    通过CFont的参数,能大致算出来个范围的,稍微大点问题应该也不是很大
      

  3.   


    CClientDC dc(this);
    HDC hDC;
    CFont mFont;  
    hDC = ::GetDC(this->m_hWnd);  
    //创建字体
    VERIFY(mFont.CreateFont(
      200, 50, 0, 0, FW_HEAVY, TRUE, FALSE,
      0, ANSI_CHARSET, OUT_DEFAULT_PRECIS,    
      CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,      
      DEFAULT_PITCH | FF_SWISS, "宋体"));         
    if (hDC!=NULL)
    {
      //开始记录窗体轮廓路径
      dc.BeginPath();    
      //设置背景为透明模式,这句话是必须有的。
      dc.SetBkMode(TRANSPARENT);    
      CFont * pOldFont;
      pOldFont = dc.SelectObject( &mFont );
      dc.TextOut(0, 0, "VCKbase");  
      dc.SelectObject( pOldFont );
      mFont.DeleteObject();
      //结束记录窗体轮廓路径
      dc.EndPath();
      //把所记录的路径转化为窗体轮廓句柄
      m_wndRgn = ::PathToRegion(dc);
      //赋予窗体指定的轮廓形状
      this->SetWindowRgn(m_wndRgn, TRUE);    
    }
    else
      AfxMessageBox("Error!");
    看这个对你帮助吗
      

  4.   

    其实上面已经有人回复是正确的了,但LZ还是有疑问,反而让我觉得不知道LZ想做什么,没有说清楚!
      

  5.   

    以图片为背景,SelectObject,然后再上面绘制文字不就行了DrawText、TextOut等
      

  6.   

    1
    //设置背景为透明模式,这句话是必须有的。
      dc.SetBkMode(TRANSPARENT); 

    直接美术做图,全OK,各种效果