也就是画图时的橡皮筋了,用过CAD或者画板的人都知道啊,大家也会用到吧?帮忙先.

解决方案 »

  1.   

    我自己搞定了,大家过来接分:private bool isdown=false;
    private Point p1 = Point.Empty;
    private Point p2 = Point.Empty;private void pic_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
    {
    isdown=true;
    pic.Capture = true;
    p1 = pic.PointToScreen(new Point(e.X, e.Y));
    } private void pic_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
    {
    isdown=false;
    pic.Capture = false;
    p2 = Point.Empty;
    } private void pic_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
    {
    if(isdown)
    {
    Point p = pic.PointToScreen(new Point(e.X, e.Y));
    if(p2 != Point.Empty)
    {
    ControlPaint.DrawReversibleLine(p1, p2, Color.Black);
    }
    p2 = p;
    ControlPaint.DrawReversibleLine(p1, p2, Color.Black);
    }
    }
      

  2.   

    楼主的代码有点小问题:画的线会超出picture控件的范围。另外请教个问题:什么叫异或作图?
      

  3.   

    pic是一个picture控件的名称,关于异或,举个例子,pic本身有已经有图了,第一次在AB两点画一条直线,这样AB间的图像就被新的直线覆盖了,如果设置图形为异或方式,再在AB间以同样的颜色画一条直线,此时,并不是AB间被新的颜色覆盖,而是恢复成没有画直线前的样子(也就是将第一条直线擦掉了,留下的是原来的图像),通过这种方法,我们在移动图像时,只要用同样的方式在原来位置画图就可以了,这对于橡皮筋类的作图是非常方便,在VC中也经常使用,而C#中好象没有了。