WPF 后台代码:鼠标左键捕获点,用polyline连接起来,实现个让线跟着鼠标移动而实现画线的过程 求代码?

点击左键描点,右键停止画线,线跟随鼠标移动... 点击左键描点,右键停止画线,线跟随鼠标移动 展开
 我来答
lrh3321
2015-03-24 · TA获得超过2183个赞
知道大有可为答主
回答量:2296
采纳率:75%
帮助的人:2123万
展开全部

坐等答案出来,我对这个也很感兴趣。

在窗体里添加一个Canvas 控件 命名为canvas

添加canvas控件的MouseLeftButtonDown、MouseRightButtonDown、MouseMove事件

我的窗体类名为Window1

 

        Polyline lines;
        Line dot;
        Polyline cach;
        public Window1()
        {
            InitializeComponent();
            
            lines=new Polyline();
            lines.Stroke =new SolidColorBrush(Colors.Black);
            canvas.Children.Add(lines);
            
            cach=new Polyline();
            cach.Stroke =new SolidColorBrush(Colors.Black);
            
            canvas.Children.Add(cach);
            
            dot=new Line();
            dot.Stroke =new SolidColorBrush(Colors.Black);
            dot.StrokeDashArray.Add(4);
            canvas.Children.Add(dot);
        }
        
        void Canvas_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            var point= e.GetPosition(canvas);
            lines.Points.Add(point);
        }
        
        void Canvas_MouseRightButtonDown(object sender, MouseButtonEventArgs e)
        {
            cach.Points=lines.Points.Clone();
            cach.Points.Add(lines.Points[0]);
            lines.Points.Clear();
            dot.X1=dot.X2=dot.Y1=dot.Y2=0;
        }
        void Canvas_MouseMove(object sender, MouseEventArgs e)
        {
            if (lines.Points.Count>0) {
                var point=lines.Points[lines.Points.Count-1];
                dot.X1=point.X;
                dot.Y1=point.Y;
                point= e.GetPosition(canvas);
                dot.X2=point.X;
                dot.Y2=point.Y;
            }
        }
大刀板子
推荐于2016-01-09 · 超过66用户采纳过TA的回答
知道小有建树答主
回答量:174
采纳率:100%
帮助的人:93.5万
展开全部

这么多分,给你写一个。完美,分给我给我给我

        bool flag = false;
        private void canvas_MouseMove(object sender, MouseEventArgs e)
        {
            if (flag == false)
                return;
            polyline.Points[polyline.Points.Count - 1] = e.GetPosition(canvas);
            Console.WriteLine("Move: " + polyline.Points[polyline.Points.Count - 1]);
        }
        private void canvas_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            flag = true;
            polyline.Points.Add(e.GetPosition(canvas));
            if (polyline.Points.Count == 1)
                polyline.Points.Add(e.GetPosition(canvas));
 
            Console.WriteLine("Left Down: " + e.GetPosition(canvas));
        }
        private void canvas_MouseRightButtonDown(object sender, MouseButtonEventArgs e)
        {
            flag = false;
            Console.WriteLine("Right Down: " + e.GetPosition(canvas));
        }
    <Canvas Name="canvas" MouseMove="canvas_MouseMove" MouseLeftButtonDown="canvas_MouseLeftButtonDown" MouseRightButtonDown="canvas_MouseRightButtonDown" Background="#FF4787E8">

        <Polyline Name="polyline" Stroke="Red" StrokeThickness="3">

        </Polyline>

    </Canvas>
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式