现在在窗口开着的情况下可以保存 我想让其在窗口关闭的时候也能保存 是不是需要把图像写到内存里 请问如何做private void DrawFitnessCurve()
        {
            Graphics dc = Graphics.FromHwnd(this.PB.Handle);            Pen CadetBluePen = new Pen(Color.CadetBlue, 2);            Point[] curve = new Point[9];            curve[0].X = 58;  curve[0].Y = 8;
            curve[1].X = 116; curve[1].Y = 20;
            curve[2].X = 174; curve[2].Y = 80;
            curve[3].X = 232; curve[3].Y = 156;
            curve[4].X = 290; curve[4].Y = 100;
            curve[5].X = 348; curve[5].Y = 89;
            curve[6].X = 406; curve[6].Y = 98;
            curve[7].X = 464; curve[7].Y = 43;
            curve[8].X = 522; curve[8].Y = 12;            dc.DrawCurve(CadetBluePen, curve);
        }        private void PB_Paint(Object sender, PaintEventArgs e)
        {
            DrawFitnessCurve();
            SaveImage();
        }        private void SaveImage()
        {
            //保存图像            Graphics g1 = this.PB.CreateGraphics();            Image MyImage = new Bitmap(this.ClientRectangle.Width, this.ClientRectangle.Height, g1);            Graphics g2 = Graphics.FromImage(MyImage);            IntPtr dc1 = g1.GetHdc();            IntPtr dc2 = g2.GetHdc();            BitBlt(dc2, 0, 0, this.ClientRectangle.Width, this.ClientRectangle.Height, dc1, 0, 0, 13369376);            g1.ReleaseHdc(dc1);            g2.ReleaseHdc(dc2);            MyImage.Save("test.png", ImageFormat.Png);
        }        [System.Runtime.InteropServices.DllImportAttribute("gdi32.dll")]        private static extern bool BitBlt(            IntPtr hdcDest, // handle to destination DC             int nXDest, // x-coord of destination upper-left corner             int nYDest, // y-coord of destination upper-left corner             int nWidth, // width of destination rectangle             int nHeight, // height of destination rectangle             IntPtr hdcSrc, // handle to source DC             int nXSrc, // x-coordinate of source upper-left corner             int nYSrc, // y-coordinate of source upper-left corner             System.Int32 dwRop // raster operation code             );

解决方案 »

  1.   

    to:程序都关闭了,你靠什么去保存?是的了,lz是不是程序设计有问题?
      

  2.   

    to coolstarhty 就是不用画出来 直接写到内存里面 我想把这个程序做成windows服务
      

  3.   

    to 现在在窗口开着的情况下可以保存 我想让其在窗口关闭的时候也能保存 是不是需要把图像写到内存里 请问你的做法并不合理,而且保存比较麻烦,比较简单的是
    你首先产生一个和Picturebox或容器同样大小的Bitmap对象,然后所有的绘画操作都在这个Bitmap对象上,然后在容器的Paint事件中
    先修改图,然后通过DrawImage的方法把它画到容器上,然后通过Bitmap自带的Save方法进行保存。
    这一部分,你可以参看
    http://www.codeproject.com/cs/media/flickerFreeDrawing.asp如果关闭窗体的时候,直接通过bitmap对象来保存。