winform手绘直线drawline

//手工编写直线
        private bool istrack = false;//按下true,放开false,不然一直画线
        private Point beginpoint;
        protected override void OnMouseDown(MouseEventArgs e)
        {
            beginpoint = new Point(e.X, e.Y);
            istrack = true;
        }
        
        public keytest()
        {
            Cursor.Current = Cursors.IBeam;
            //SizeF sf= CreateGraphics().MeasureString("测试graphics.measurestring", Font, Point.Empty, StringFormat.GenericTypographic);//sizef存储矩形的宽高度,由measurestring

        }

        protected override void OnMouseMove(MouseEventArgs e)
        {
            if (!istrack)
                return;
            Point endpoint = new Point(e.X, e.Y);
            Graphics gp = CreateGraphics();
            gp.DrawLine(new Pen(Color.Blue), beginpoint, endpoint);
            gp.Dispose();
            //beginpoint = endpoint;//加此行代码很重要要不加,效果出来就不是直线,而是一堆杂乱的排线,beginpoint=endpoint表示永远是从新位置开始绘制
        }
        public static void Main()
        {
            Application.Run(new keytest());
        }

        protected override void OnMouseUp(MouseEventArgs e)
        {
            istrack = false;

        }
请使用浏览器的分享功能分享到微信等