日期:2014-05-17  浏览次数:21346 次

熟悉GDI编程的同学帮忙看看,AlphaBlend 透明图像的绘制
C# code


        protected override void OnPaint(PaintEventArgs e)
        {
            base.OnPaint(e);
            IntPtr hdc = GetDC(Handle);
            mdc = CreateCompatibleDC(hdc);
            IntPtr hbmp = CreateCompatibleBitmap(hdc, ClientSize.Width, ClientSize.Width);
            SelectObject(mdc, hbmp);

            //从mdc中构建Graphics对象
            Graphics g = Graphics.FromHdc(mdc);
            //SetBkMode(mdc, TRANSPARENT);

            g.DrawImage(_CloseBmp, ClientRectangle, 0, 0, _CloseBmp.Width, _CloseBmp.Height, GraphicsUnit.Pixel);

            AlphaBlend(hdc, 0, 0, ClientRectangle.Width, ClientRectangle.Height, mdc, 0, 0, ClientRectangle.Width, ClientRectangle.Height, new BLENDFUNCTION(255));

            DeleteDC(mdc);
            DeleteObject(hbmp);
            ReleaseDC(Handle, hdc);

        }



这个是我的代码,但是不知道问题出在哪里,找了好久了都。

------解决方案--------------------
你不知道问题出在哪里。。我不知道出了什么问题。。
------解决方案--------------------
从dc获取的图象不可能是png的要自己转。
转成png再绘上去。