我最近要在一个对话框上显示文字,这个对话框用BMP位图来做背景,那么文字显示时要求是透明北景,也就不能用TextOut了,谁有这方面的经验,能不能给个例子看一看,或是做个解答,万分感谢

解决方案 »

  1.   

    加上这句话然后就可以使用TextOut透明背景输出了
      

  2.   

    在.h中定义:CBitmap m_bmpBackground;
    OnInitDialog()中加入:
        m_bmpBackground.LoadBitmap(IDB_BITMAPBACKGROUND);
    在OnPaint() 刷新: CRect rect;
    GetClientRect(&rect);
    CDC dcMem; 
    dcMem.CreateCompatibleDC(&dc); 
    BITMAP bitMap;
    m_bmpBackground.GetBitmap(&bitMap);
    CBitmap *pbmpOld=dcMem.SelectObject(&m_bmpBackground);
    dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,bitMap.bmWidth,bitMap.bmHeight,SRCCOPY);
    你可以在任何地方TextOut 了。因为先把图已经贴上了。
    TextOut必须先获取窗口的CDC.
      

  3.   

    那你在写进这些字之前就要把位图保存下来,想要删除的话就把位图的相应区域BitBlt到DC的合适地方
      

  4.   

    主要是创建一个内存DC,给内存DC选择进入一个屏幕大小的位图
    然后你在TextOut之前先把要覆盖的区域BitBlt到内存DC的合适位置里面,擦除的话可以把内存DC的合适位置的位图BitBlt到屏幕DC中
      

  5.   

    算法是不是可以优化,bluebohe的方法有点浪费资源,每次写字之前都要画一遍图。
    如果你在static里写字
    只要Updatedata(TRUE)
       textout(  )
      UpdateDate(FALSE);