windows mobile中签字

鼠标(手写笔)轨迹坐标记录,然后画很多短的线
一:建立一个类,代表线段的两个端点(之所以用线段是由于需要连续的效果,否则如果鼠标移动的太快的话,会有断断续续的现象)
 public class DrawLine
   {
    private int _x1;
    private int _y1;
    private int _x2;
    private int _y2;
    public DrawLine(int X1, int Y1, int X2, int Y2)
    {
        _x1 = X1;
        _y1 = Y1;
        _x2 = X2;
        _y2 = Y2;
    }

    public int X1
    {
        get
        {
            return _x1;
        }

        set
        {
            _x1 = value;
        }
    }

    public int Y1
    {
        get
        {
            return _y1;
        }

        set
        {
            _y1 = value;
        }
    }

    public int X2
    {
        get
        {
            return _x2;
        }

        set
        {
            _x2 = value;
        }
    }

    public int Y2
    {
        get
        {
            return _y2;
        }

        set
        {
            _y2 = value;
        }
    }
   }

二 在签字的窗体里定义

        private int x1;
        private int x2;
        private int y1;
        private int y2;
        private System.Drawing.Pen mPen = new Pen(System.Drawing.Color.Black,2);
        private bool bMouse = false;
        public System.Collections.Generic.List<DrawLine> Points;

       private void Signature_Load(object sender, EventArgs e)
        {
            Points = new List<DrawLine>();
        }


        并且在MouseDown,MouseMove,MouseUp中作出相应的动作
        private void Signature_MouseDown(object sender, MouseEventArgs e)
        {
            bMouse = true;
            x1 = e.X;
            y1 = e.Y;
        }

        private void Signature_MouseMove(object sender, MouseEventArgs e)
        {
            if (!bMouse)
            {
                return;
            }
            else
            {
                Graphics g;
                x2 = e.X;
                y2 = e.Y;
                g = this.CreateGraphics();
                DrawLine point = new DrawLine(x1, y1, x2, y2);
                Points.Add(point);
                g.DrawLine(mPen, x1, y1, x2, y2);
                x1 = x2;
                y1 = y2;

            }
        }

        private void Signature_MouseUp(object sender, MouseEventArgs e)
        {
            bMouse = false;
        }
       可以将Points中的内容保存起来,拱日后还原

posted on 2008-05-21 16:38  优雅小猪  阅读(197)  评论(0编辑  收藏  举报

导航