public Bitmap im = new Bitmap("图片1.JPG");//图片的大小 320x384我已经将窗体的背景设置为“白色”,同时
也将窗体的TransparencyKey也设置为“白色”了。

解决方案 »

  1.   

    sorry,我也不懂, 只能參與看看
      

  2.   

    你还需要将图片也设定一个透明色。比如你的透明色是白色,你就需要
    im.MakeTransparent(Color.White);
      

  3.   

    楼上的兄弟,你能给小弟一个简单的范例吗?
    感激不仅... ...
      [email protected]
      

  4.   

    阿阿!我知道了。问题的关键就在于
    GraphicsPath myPath = new GraphicsPath();
    中的myPath 变量没有实例化。
    那么自然没有将myPath定义好的曲线以外的
    区域给排除在外,那么重写的效果肯定还是原来的
    那样了。=============================================
    现在有谁能给小弟写几句代码,这100分就给他好了:
    GraphicsPath myPath = new GraphicsPath();
    //将变量按照这样参数实例化
    //myPath = new GraphicsPath(/*points,types,fillMode*/);  拜托!
      急急。
      

  5.   

    比如你有一个bmp文件为test.bmp,你画这个bmp文件的时候一定要很注意,先把底色设为黑色。因为在用透明色的时候,对颜色其实很敏感,如果你的颜色有和黑色有一点差异,它就不会被作为透明处理了。具体的道理简单讲,好像系统是采用一种异或算法来对每象素的颜色处理的。所以这点一定要注意。我们假设test.bmp的背景色为黑色,那么我们可以在窗体的paint事件函数里面这样写:
    private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
    {
        try
        {
             Graphics gr = e.Graphics;
    Bitmap img = new Bitmap("test.bmp"); //要把test.bmp放在debug目录下
    img.MakeTransparent(Color.Black);
    gr.DrawImage(img,0,0,this.Width,this.Height);
        }
        catch(Exception ex)
        {
    MessageBox.Show(ex.ToString());
        }
    }
    这样,你就会得到你要的效果了,你可以试试,有问题再问吧。
      

  6.   

    如果这样还不行,可能真的就是你说的path的问题了。对那个我没什么研究,帮不了忙了。