C#鼠标画线问题

用左键单击开始画线,右键单击结束画线,双击清空怎么实现... 用左键单击开始画线,右键单击结束画线,双击清空怎么实现 展开
 我来答
microroom
科技发烧友

2017-09-07 · 智能家居/数码/手机/智能家电产品都懂点
知道大有可为答主
回答量:7118
采纳率:83%
帮助的人:1612万
展开全部
1、将窗体的DoubleBuffered属性设置为true;
2、添加以下变量到窗体:
private bool notStart=true;
private Point tp,sp,ep;
private List<Point> ll=new List<Point>();
private List<List<Point>> l=new List<List<Point>>();
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<Point>();
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<l.Count;i++)
{
p=l[i][0];
for(int j=1;j<l[i].Count;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();
}
}
阳光的雷咩咩
2017-09-06 · TA获得超过1.4万个赞
知道大有可为答主
回答量:2.3万
采纳率:66%
帮助的人:7805万
展开全部
可以帮写实例,网上也有很多现成的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式