窗体里面使用GDI方式绘图,运行后,显示不出图片来,是怎么回事呢?代码如下所示:
        private void Form1_Load(object sender, EventArgs e)
        {
            Image newImage = Image.FromFile("mypicture.jpg");
            Graphics g = Graphics.FromImage(newImage);
            g.DrawImage(newImage, 10, 10);
        }

解决方案 »

  1.   

    放到onpaint事件中,而且你这个Graphics是谁的啊,应该是窗体的吧,onpaint事件中,e参数中有
      

  2.   


    System.Drawing.Image img = Bitmap.FromFile(Server.MapPath("Img/aa.jpg"));
                MemoryStream ms = new MemoryStream();
                img.Save(ms, System.Drawing.Imaging.ImageFormat.Png);            Response.Clear();
                Response.ContentType = "image/png";
                Response.BinaryWrite(ms.GetBuffer());
                ms.Dispose();
                ms.Close();
                Response.End();
      

  3.   

    1.重写窗体的OnPaint事件,具体绘图放到这里实现。
    2.Graphics对象只能取自于特定的绘图设备,你要在窗体绘图,当然要创建窗体的Graphics.
    贴段示例代码:protected override void OnPaint(PaintEventArgs e)
    {
        e.Graphics.DrawImage(newImage, 10, 10);
    }
      

  4.   


            protected override void OnPaint(PaintEventArgs e)
            {
                //得到窗体的Graphics
                  Graphics gh = e.Graphics;
                Image newImage = Image.FromFile("Aqua23.jpg");
                //在窗体上画出图画
                gh.DrawImage(newImage, 10, 10);
            }
    你的方法只是获得图片的Graphics,画在图片上而已
      

  5.   

    如果是在Onpaint事件中,没有问题;我的问题是不在这个事件中,怎么绘制?
      

  6.   

    如果不使用PaintEventArgs,我怎么获得窗体的Graphic呢?
      

  7.   


                //得Button的Graphics
                Graphics g = button.CreateGraphics();创建控件的Graphics
      

  8.   

    我改成了下面的样子获取窗体的Graphic,但还是不行呢? private void Form1_Load(object sender, EventArgs e)
            {
                Image newImage = Image.FromFile("mypicture.jpg");
                Graphics g = this.CreateGraphics();
                g.DrawImage(newImage, 10, 10);
            }
      

  9.   

    你load事件下面。。写是看不到效果的。。窗体load完成后不会立即显示。你如果做个按钮。上面代码写在按钮上,能看到效果。
      

  10.   

    load只是加载。。做show操作的时候 先加载,加载完成后调用 OnPain方法绘制窗口,OnPain的时候,你做的绘制操作也就被刷掉了。
      

  11.   

    我告诉你原因,因为你虽然画了,但是没有让他显示。
          private void Form1_Load(object sender, EventArgs e)
            {
                Image newImage = Image.FromFile("mypicture.jpg");
                Graphics g = Graphics.FromImage(newImage);
                g.DrawImage(newImage, 10, 10);
                this.picturebox1.image=newImage;//显示出来啥
            }
      

  12.   

    当窗体移动,窗体大小改变等消息都会触发窗体重绘,重绘如果你不在重绘事件下做,每次窗体被重绘他默认只会绘制自己的东西,加上调用窗体中控件的重绘方法。而load事件被触发的时候,窗体并没有显示出来,你那个时候绘制根本看不到。。