none
picturebox显示透明图片问题 RRS feed

  • 问题

  •  

    我的透明图片是png格式的,但是无论我把picturebox的backcolor设成transparent还是和窗体背景色相同,显示出来的图片仍然有一圈白色,怎么才能显示透明图片啊?我改成gif格式也不行。
    2008年5月5日 2:41

答案

全部回复

  • 遍历所有像素点,将白色像素换成背景色~~这样应该就能透明了

    2008年5月5日 2:59
    版主
  • 1.PictureBox不能真正的透明(让你看到图片轮廓以下的东西)
    2.单一的颜色透明还是可以的:

            public void Paint(Graphics gx)
            {
                if (!pushed || imageDown == null)
                {
                    ImageAttributes attrib = new ImageAttributes();
                    Color color = GetTransparentColor(image);
                    attrib.SetColorKey(color, color);
                    gx.DrawImage(image, clientArea, 0, 0, clientArea.Width, clientArea.Height, GraphicsUnit.Pixel, attrib);               
                }
                else
                {
                    ImageAttributes attrib = new ImageAttributes();
                    Color color = GetTransparentColor(imageDown);
                    attrib.SetColorKey(color, color);
                    gx.DrawImage(imageDown, clientArea, 0, 0, clientArea.Width,

     clientArea.Height, GraphicsUnit.Pixel, attrib);               
                }
            }

            private Color GetTransparentColor(Bitmap image)
            {
                return image.GetPixel(0, 0);
            }


    希望对你有所帮助



    Freesc




    2008年5月6日 9:18
    版主
  • 其实可以直接使用gif或png,这两种图片格式都支持透明通道的,所以不需要程序的过多设置,比较方便。

     

    2008年5月6日 10:40
    版主
  • 他说的透明恐怕不是这个意思,AlphaBlend处理过的透明是整个图片的透明,不是那种背景透明图像,如果真是那样的话到也好办了,可以参考这里:http://www.cnblogs.com/fox23/archive/2007/10/01/windowsmobile-transparent-picture.html
    2008年5月6日 12:32
    版主