img = Image.FromFile("vod.png");
            Rectangle rect = new Rectangle(new Point(0, 0), new Size(100 , 100 ));
            BufferedGraphicsContext current = BufferedGraphicsManager.Current;
            BufferedGraphics bg = current.Allocate(this.CreateGraphics(), rect);
            Graphics g = bg.Graphics;
            g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
            g.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighSpeed;
            g.Clear(this.BackColor);            Bitmap bit=new Bitmap(img,100,100);
            g.DrawImage(bit, 0, 0);            bg.Render();
            bg.Dispose();我用如上代码绘制了一张100*100图片在位置(0,0)上
但是有个问题是,我的form有背景图,画上图片后,图片的背景把form的背景图挡住了,这也太难看了
用什么把图片的背景弄为透明了啊。谢谢

解决方案 »

  1.   

    g.Clear(this.BackColor);这个不见得是图片的问题,而是你绘制过程中的问题。
      

  2.   

    看样子不是图片的问题,
     g.Clear(this.BackColor);
    删除了看看
      

  3.   

    这样,能实现你要的效果,可以根据需要再修改Image img = Image.FromFile("c:\\vod.png");
    Rectangle rect = new Rectangle(new Point(0, 0), new Size(100, 100));
    BufferedGraphicsContext current = BufferedGraphicsManager.Current;
    BufferedGraphics bg = current.Allocate(this.CreateGraphics(), rect);
    Graphics g = bg.Graphics;
    g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
    g.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighSpeed;
    g.Clear(this.BackColor);Bitmap bit = new Bitmap(img, 100, 100);
    g.DrawImage(bit, 0, 0,100,100);pictureBox1.Image = bit;
    pictureBox1.BackColor = Color.Transparent;
    bg.Render();
    bg.Dispose();
      

  4.   

    sprintf(strNum,"%d",i*m_Draw_Data.increase_Y);