永发信息网

C#鼠标画线问题

答案:2  悬赏:60  手机版
解决时间 2021-01-31 21:21
  • 提问者网友:雪舞兮
  • 2021-01-31 16:17
C#鼠标画线问题
最佳答案
  • 五星知识达人网友:長槍戰八方
  • 2021-01-31 17:15
1、将窗体的DoubleBuffered属性设置为true;
2、添加以下变量到窗体:
private bool notStart=true;
private Point tp,sp,ep;
private List ll=new List();
private List> l=new List>();
3、依次为窗体的MouseDown、MouseMove、Paint、MouseDoubleClick事件添加以下处理函数:
void MainFormMouseDown(object sender, MouseEventArgs e)
{
tp=new Point(e.X,e.Y);
ll.Add(tp);
if(MouseButtons.Left==e.Button)
{
sp=tp;
if(notStart)
{
l.Add(ll);
notStart=false;
}
}
else
{
if(!notStart)
{
ll=new List();
notStart=true;
}
}
Invalidate();
}

void MainFormMouseMove(object sender, MouseEventArgs e)
{
ep=new Point(e.X,e.Y);
Invalidate();
}

void MainFormPaint(object sender, PaintEventArgs e)
{
Point p;
Graphics g=e.Graphics;

for(int i=0;i {
p=l[i][0];
for(int j=1;j {
g.DrawLine(Pens.Red,p,l[i][j]);
p=l[i][j];
}
}
if(!notStart)
{
g.DrawLine(Pens.Red,sp,ep);
}
}

void MainFormMouseDoubleClick(object sender, MouseEventArgs e)
{
if(MouseButtons.Left==e.Button)
{
l.Clear();
ll.Clear();
notStart=true;
Invalidate();
}
}
全部回答
  • 1楼网友:第幾種人
  • 2021-01-31 18:00
可以帮写实例,网上也有很多现成的
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯