完成了
就是有闪烁,可以画在picbox上,也可以双倍缓存
自己处理吧
源码、form1的using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;namespace 可以拖动的点
{
    public partial class Form1 : Form
    {
        Point[] p = new Point[4]{new Point(10,10),new Point(40,90),new Point(120,200),new Point(200,30)};
        bool Flag = false;
        int selectPointIndex = -1;
        public Form1()
        {
            InitializeComponent();
        }        private void Form1_Load(object sender, EventArgs e)
        {
            
        }        private void Form1_Paint(object sender, PaintEventArgs e)
        {
            Graphics dc = e.Graphics;
            dc.FillRectangle(Brushes.White, this.ClientRectangle);
            Pen pen = new Pen(Color.Red, 2);
            dc.DrawLines(pen, p);
            for(int i=0;i<p.Length;i++)
            {
                dc.FillRectangle(Brushes.Black,new Rectangle(p[i].X-3,p[i].Y-3,6,6));
            }
            
        }        private void Form1_MouseDown(object sender, MouseEventArgs e)
        {
            Point pp = new Point(e.X, e.Y);
            for (int i = 0; i < p.Length; i++)
            {
                if (pp.X>p[i].X-3&&pp.X<p[i].X+3&&pp.Y>p[i].Y-3&&pp.Y<p[i].Y+3)
                {
                    Flag = true;
                    selectPointIndex=i;
                }
            }
        }        private void Form1_MouseMove(object sender, MouseEventArgs e)
        {
            if (Flag)
            {
                Point pp = new Point(e.X, e.Y);
                p[selectPointIndex] = pp;
                this.Refresh();
            }
                    }        private void Form1_MouseUp(object sender, MouseEventArgs e)
        {
            Flag = false;
        }
    }
}