请问如何用在主窗体上描画的bitmap上写字,应该在WinMain里和WndProc做些什么?
能给点简单的代码实例最好,,,谢谢各位~~

解决方案 »

  1.   

    一般的方法是将位图贴在一个DC中,然后用TextOut写字,再将DC中的位图贴到窗口中
      

  2.   


    是可以这样,我试了试,但是字写出来了,背后有白色的背景,我想要的是BITMAP的背景!请问有什么办法可以实现
      

  3.   

     int   WINAPI SetBkMode(__in HDC hdc, __in int mode); // MODE 设置为 TRANSPARENT 未定义直接 为 1
      

  4.   

    这个有点麻烦,提供一个思路给你,你可以定义一个DC,以白底黑字写字,然后将这个DC的内容和背景进行AND运算,然后再用黑底和你想要要的字色来写字,将这个DC的内容与背景进行OR运算,最后应该能达到你的结果
      

  5.   

    char szText[] = "你要写的文字";
    HBITMAP hbm = LoadBitmap(...)//加载你的Bitmap
    HDC hDC = GetDC(hWnd);
    HDC hMemDC = CreateCompatibleDC(hDC);

    SelectObject(hMemDC,hbm);
    SetBkMode(hMemDC, TRANSPARENT);TextOut(hMemDC,0,0,szText,strlen(szText));//或者用DrawText
    BitBlt(hDC,0,0,bitmap_width,bitmap_height,hMemDC,0,0,SRCCOPY);
    DeleteObject(hMemDC);
    ReleaseDC(m_hWnd,hDC);DeleteObject(hbm);
      

  6.   


    CDC m_memDC;
    m_memDC.CreateCompatibleDC(NULL);//创建内存DC.
    CBtimap m_Bitmap;
    m_Bitmap.LoadBitmapW(IDB_BITMAP);//IDB_BITMAP 是你在资源中定义的bitmap。
    m_memDC.SelectObject(&m_Bitmap); //将bitmap选进内存DC中。
    其它地方:可以写字了m_memDC.TextOutW(int topleftX,int topleftY,LPCTSTR  stringYouWangOutPut,int nCountOfString);在OnDraw 或者OnPain中。dc.BitBlt(.............................);//不用我细说了吧
    //总之就是先创建一个内存DC,做出操作,画图,写字都可以,然后显示在窗口中。
      

  7.   

    谢谢了,刚刚的代码对我帮助很大,但是我还想问如果我想将字放在一个矩形里,然后传进DC中,
    用DrawText画,,最后设置字的大小和字体那应该怎么搞了?
      

  8.   

    这个需要填充一个LOGFONT结构,然后CreateFontIndirect创建字体得到其HFONT,SelectObject(hMemDC,hFont),DrawText就可以了。