完成了
就是有闪烁,可以画在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;
}
}
}
就是有闪烁,可以画在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;
}
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货