我想在Pictrue控件上显示一个透明的位图。
我在Fireworks做了一个透明的位图,
但是显示在控件 上却总是白色,不是透明的!
哪位帮帮我.......

解决方案 »

  1.   

    UINT AlphaDisplay(LPVOID lpParam)
    {
    CMDlg * dlg = (CMDlg*)lpParam;
    CClientDC dc(dlg);
    CDC MemDC;
    MemDC.CreateCompatibleDC(&dc); BLENDFUNCTION rBlendProps;
    rBlendProps.BlendOp = AC_SRC_OVER;
    rBlendProps.BlendFlags = 0;
    rBlendProps.AlphaFormat = 0;
    CBitmap bitmap;
    bitmap.LoadBitmap(IDB_BMP_BG_01);
    MemDC.SelectObject(&bitmap);
    BITMAP bmInfo; ::GetObject(bitmap.m_hObject, sizeof(BITMAP), &bmInfo);
    INT width, heigh;
    width = bmInfo.bmWidth;
    heigh = bmInfo.bmHeight;
    rBlendProps.SourceConstantAlpha = 128;
    AlphaBlend(dc.m_hDC, 0, 0, width, heigh, MemDC.m_hDC, 0, 0, width, heigh, rBlendProps);
    return 0;
    }
      

  2.   

    上面说的很对 Alpha 混合。
      

  3.   

    不好意思 我是刚学VC的
    看不太懂啊~AlphaDisplay()是哪的函数?还是是自己加的?
    CMDlg * dlg = (CMDlg*)lpParam;
    CClientDC dc(dlg);
    上面的代码看不懂~
    我是要加在一个控件上的
    用SetBitmap();加位图~~
    最好是用这个函数把位图加上,因为我要用这个SetBitmap()函数加不同的位图呢~~
    哪为给个具体的代码???谢谢拉。
      

  4.   

    Alpha  是MFC的吗?
    我查了MFC函数库  没找到呀~
      

  5.   


    AlphaDisplay()是自己写的函数!
    我有一段去掉bmp图的透明色的,你可以看看 !
    要到话发mail给我, [email protected]