本帖最后由 VisualEleven 于 2013-09-05 10:38:56 编辑

解决方案 »

  1.   

    void CMy1_6View ::TransparentBitmap(HDC hdc, HBITMAP hBitmap,short xStart,
    short yStart, short xadd,short yadd, COLORREF cTransparentColor)
    cTransparentColor就是要透明化的颜色值了,常用的值是RGB(255, 0, 255)
      

  2.   

    说白了就是把图片中有cTransparentColor这个颜色值的地方都去掉
      

  3.   

    能说的具体一点吗,我把cTransparentColor替换成RGB(255, 0, 255)就报错
      

  4.   

    本帖最后由 VisualEleven 于 2013-09-05 10:39:37 编辑
      

  5.   

    CBitmap DispBmp;
     CBitmap *OldBmp;
     CDC SourceDC;
     DispBmp.LoadBitmap(IDB_BITMAP1);
     SourceDC.CreateCompatibleDC(PDC);
     OldBmp = SourceDC.SelectObject(&DispBmp);
     ::TransparentBlt(PDC->m_hDC,0, 0,128, 128, SourceDC.m_hDC,0,0,128,128,RGB(0,0,0));
     SourceDC.SelectObject(OldBmp);
      

  6.   

    PDC需要定义   应该定义为什么类型。
      

  7.   

    能说清除点吗,我是菜鸟 ,是不是int
      

  8.   

    //    HDC hdc 显示句柄
    这个参数 要由 调用者 (caller) 给,
    就是 你 想 画到什么 上。通常 Caller 可以 :
    CClientDC dc(this);
    或者:
    CDC *pDC =GetDC();// 注意 函数 调用完后 要 ReleaseDC()
      

  9.   

    弱弱的问一下,CDC *pDC =GetDC;和 ReleaseDC()应该写在哪一行
      

  10.   

    CDC *pDC =GetDC();
    TransparentBitmap(pDC, hBitmap,xStart,yStart,xadd,yadd,cTransparentColor);
    ReleaseDC(pDC);
      

  11.   

    我有点乱,谁能给我发一个从头到尾的详细制作流程,我的分就给谁了。我的图片名称叫IDB_BITMAP1.bmp  大小是48*48 。要红色背景。谢谢了。
      

  12.   

    可以直接使用 TransparentBlt() 函数 ;连接 加入 msimg32.lib :
    void DrawTransparentBitmap()
    {
    CClientDC dc(this);
    CDC memDC;
    memDC.CreateCompatibleDC(&dc);
    HBITMAP old=(HBITMAP)memDC.SelectObject(m_bmp);// your bitmap !!!
    BITMAP bm;
    GetObject(m_bmp,sizeof(BITMAP),&bm);
    TransparentBlt(dc,0,0, bm.bmWidth,bm.bmHeight,memDC,0,0,bm.bmWidth,bm.bmHeight,RGB(255,0,0));
    memDC.SelectObject(old);
    DeleteObject(memDC);
    }
      

  13.   

    请问 转成 C#的代码需要 调用那些 API?