求教:
    如何将绘制的图形保存,防止因为Invalidate()的刷新而消失?
小弟查了一下,有说用什么图形合成的,还有缓冲绘图的,但是都好像不能实现啊。

解决方案 »

  1.   

    将你绘图的代码放在控件的Paint事件处理函数中,这样重绘后图形也不会消失.
      

  2.   

    我本想让Draw类绘图
    那么再Form1.cs的Paint函数中都得那样声明了然后重绘啊?
    再数据管理比较多的时候我就晕了
    能不能提供点其他的方法啊?
    能否动态保存bitmap或是Image对象,这样画一点就存一点?
    或是将Draw中的Bitmap同Form1中的Bitmap合并?
      

  3.   

    往Image中绘图也可以,只要在Paint事件处理函数中用DrawImage方法将Image对象绘制出来即可:    public partial class Form1 : Form
        {
            private Image img;        public Form1()
            {
                InitializeComponent();
            }        private void Form1_Load(object sender, EventArgs e)
            {
                img = new Bitmap(this.ClientRectangle.Width, this.ClientRectangle.Height);            Graphics dc = Graphics.FromImage(img);
                dc.DrawLine(Pens.Black, 0, 0, this.ClientRectangle.Width, this.ClientRectangle.Height);
            }        private void Form1_Paint(object sender, PaintEventArgs e)
            {
                Graphics dc = e.Graphics;            dc.DrawImage(img, 0, 0);
            }
        }
      

  4.   

    多谢啊,但还是不能否如何实现对img对象的更新啊
    如果我再用一个事件绘图了,如单击等
    img=new Bitmap(...)
    这样继续绘图,也可以显示
     public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
            private Bitmap img;
            private Bitmap img2;        private void Form1_Load(object sender, EventArgs e)
            {
                img = new Bitmap(this.ClientRectangle.Width, this.ClientRectangle.Height);            Graphics dc = Graphics.FromImage(img);
                dc.DrawLine(new Pen(Color.Red, 2), 0, 0, this.ClientRectangle.Width, this.ClientRectangle.Height);
                
                img2 = new Bitmap(this.ClientRectangle.Width, this.ClientRectangle.Height);
                Graphics dc2 = Graphics.FromImage(img2);
                dc2.DrawLine(new Pen(Color.Red, 2), this.ClientRectangle.Width,0 , 0, this.ClientRectangle.Height);        }
            private void Form1_Paint(object sender, PaintEventArgs e)
            {
                Graphics dc = e.Graphics;
               
                dc.DrawImage(img, 0, 0);
                dc.DrawImage(img2, 0, 0);
            }
    小弟回去试试,谢谢!