如图,
我在pictureBox中用如下方法绘制了"csdn"的笔迹,
如何将这些笔迹保存,如何删除?
Point[] _p = new Point[0];
        private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
        {
            Array.Resize(ref _p, _p.Length + 1);
            _p[_p.GetUpperBound(0)] = new Point(e.X, e.Y);
            if (e.Button == MouseButtons.Left && _p.Length > 1)
            {
                Graphics g = pictureBox1.CreateGraphics();
                g.DrawLine(Pens.Red, _p[_p.GetUpperBound(0)], _p[_p.GetUpperBound(0) - 1]);
            }
        }C#手写笔迹

解决方案 »

  1.   

    最好是画在bitmap上面,将bitmap作为背景图片给picturebox。
    擦除:重新new一个bitmap
    保存:bitmap.save
      

  2.   

    直接pictureBox1.Refresh()就删除了
    保存的话,你把MouseMove里的所有经过的点都保存在Point[] pt里,需要时再根据这些点重绘一下
      

  3.   

    像是有这种复杂背景的擦出一般不容易,如果要擦出,用双缓存:
    1.先建一Bitmap,将确定的不需要刷除的画在这里,
    2.再将这个bitmap画到你的窗体,再将线画到窗体,
    3.如果要release重画bitmap,不画你的线。 
      

  4.   

    画在bitmap上面是什么意思?
    不是把图片作为background image放在picturebox里边,然后在picturebox的mouse move事件中绘图吗?
      

  5.   

    方法一:
    鼠标移动时记录笔迹
    List<Point> list=new List<Point>();
    list.Add(pos);窗体重画时重绘,OnPaint方法
    foreach(Point pos in list)
    {
    e.Graphics.DrawLine(...,...);
    }方法二:
    直接画在图片上Graphics g=Graphics.FromImage(bmp);g.DrawLine(...,...)
    窗体重画时重绘图片,OnPaint方法 e.Graphics.DrawImage(bmp,...)
      

  6.   

    我的GDI绘图序列保存加载 http://download.csdn.net/detail/softcreator/5095481