以前在VC中用过TransparentBlt函数
现在想在C#中实现功能:把bmp图片画到panel中去,panel中有背景图,要求画的bmp图片背景要透明化请各位高手指点一下,最好能给出完整代码,万分感谢!!!
    Graphics g = panel_qipan.CreateGraphics();
            Graphics gTemp = panel_qipan.CreateGraphics();
            Image img = new Bitmap(Directory.GetCurrentDirectory().Substring(0,Directory.GetCurrentDirectory().Length - 10) + @"\res\RED_B.bmp");            Color c = Color.FromArgb(0, 0, 0); 
            IntPtr hdc = g.GetHdc();
            IntPtr hdcTemp = gTemp.GetHdc();
            TransparentBlt(hdc, 0, 0, 50, 50, hdcTemp, 0, 0, 50, 50, ParseRGB(c)); 
           
            
            g.ReleaseHdc(hdc);
            gTemp.ReleaseHdc(hdcTemp);
            g.DrawImage(img, e.X - 25, e.Y - 25, 50, 50);
            g.Dispose(); gTemp.Dispose();

解决方案 »

  1.   

    搞了一下午  终于搞出来了  帖出来   希望对大家有帮助
       Graphics g = panel_qipan.CreateGraphics();
                IntPtr memdc = CreateCompatibleDC(g.GetHdc());
                SelectObject(memdc, qzBmp.GetHbitmap());            //背景透明化
                Graphics gQZ = Graphics.FromHdc(memdc);
                Graphics gQP = Graphics.FromImage(qpBmp);
                IntPtr dcQZ = gQZ.GetHdc();
                IntPtr dcQP = gQP.GetHdc();
                TransparentBlt(dcQP, e.X - 25, e.Y - 25, 50, 50, dcQZ, 0, 0, qzBmp.Width, qzBmp.Height, ParseRGB(Color.White));            gQZ.ReleaseHdc(dcQZ);
                gQP.ReleaseHdc(dcQP);
                panel_qipan.BackgroundImage = qpBmp;
      

  2.   

    搞了一下午  终于搞出来了  帖出来   希望对大家有帮助
       Graphics g = panel_qipan.CreateGraphics();
                IntPtr memdc = CreateCompatibleDC(g.GetHdc());
                SelectObject(memdc, qzBmp.GetHbitmap());            //背景透明化
                Graphics gQZ = Graphics.FromHdc(memdc);
                Graphics gQP = Graphics.FromImage(qpBmp);
                IntPtr dcQZ = gQZ.GetHdc();
                IntPtr dcQP = gQP.GetHdc();
                TransparentBlt(dcQP, e.X - 25, e.Y - 25, 50, 50, dcQZ, 0, 0, qzBmp.Width, qzBmp.Height, ParseRGB(Color.White));            gQZ.ReleaseHdc(dcQZ);
                gQP.ReleaseHdc(dcQP);
                panel_qipan.BackgroundImage = qpBmp;
      

  3.   

    搞了一下午  终于搞出来了  帖出来   希望对大家有帮助
       Graphics g = panel_qipan.CreateGraphics();
                IntPtr memdc = CreateCompatibleDC(g.GetHdc());
                SelectObject(memdc, qzBmp.GetHbitmap());            //背景透明化
                Graphics gQZ = Graphics.FromHdc(memdc);
                Graphics gQP = Graphics.FromImage(qpBmp);
                IntPtr dcQZ = gQZ.GetHdc();
                IntPtr dcQP = gQP.GetHdc();
                TransparentBlt(dcQP, e.X - 25, e.Y - 25, 50, 50, dcQZ, 0, 0, qzBmp.Width, qzBmp.Height, ParseRGB(Color.White));            gQZ.ReleaseHdc(dcQZ);
                gQP.ReleaseHdc(dcQP);
                panel_qipan.BackgroundImage = qpBmp;