鼠标点的读取

  • 首先需要在WPF中的前端页面获取对鼠标的操作
  • 在一个布局里(Grid)新建关于鼠标的相关“事件”
//相关事件MouseEnter="grid_MouseEnter" //鼠标进入MouseLeave="grid_MouseLeave"//鼠标离开MouseLeftButtonDown="grid_MouseLeftButtonDown"//鼠标左键按下MouseLeftButtonUp="grid_MouseLeftButtonUp"//鼠标左键抬起MouseMove="grid_MouseMove"//鼠标离开

后台相关操作

  • 主要是要获取鼠标在进入后的“第一个点”与“第二个点”
        //声明Point指针类型的字段private Point point;//声明鼠标是否按下的Bool类型的字段并且初始值是“false”(按下isDown=true没按isDown=false)private bool isDown = false;//new一个能绘制(line)成线的类型的对象Line dot = new Line();//这个是关于鼠标移动的事件private void grid_MouseMove(object sender, MouseEventArgs e) {          if (isDown) {//按下并移动就相当于获取第二点Point point2 = e.GetPosition(grid);Console.WriteLine("鼠标移动" + point2);//连线dot.X1 = point.X;dot.Y1 = point.Y;dot.X2 = point2.X;dot.Y2 = point2.Y;point =point2;}}

具体的流程代码

        private void grid_MouseEnter(object sender, MouseEventArgs e) {Console.WriteLine("进入");}private void grid_MouseLeave(object sender, MouseEventArgs e) {Console.WriteLine("离开");}private void grid_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) {point = e.GetPosition(grid);//鼠标按下就是第一个点Console.WriteLine("鼠标按下"+point);isDown = true;}private void grid_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) {Console.WriteLine("鼠标松开" + e.GetPosition(grid));isDown = false;}private Point point;private bool isDown = false;Line dot = new Line();private void grid_MouseMove(object sender, MouseEventArgs e) {          if (isDown) {Point point2 = e.GetPosition(grid);Console.WriteLine("鼠标移动" + point2);//连线dot.X1 = point.X;dot.Y1 = point.Y;dot.X2 = point2.X;dot.Y2 = point2.Y;point =point2;}}

关于输出的结果

具体实例运用

将画笔封装成一个方法且带参数

//new一个对象后面加花括号的作用是为了赋值公有数据可写字段的。
//geometries 这个对象在画图中FillRule为填充规则的意思,它有两个属性值,EvenOdd,Nonzero
//EvenOdd是具有穿透效果,Nonzero没有穿透效果
private GeometryGroup geometries = new GeometryGroup() { FillRule = FillRule.Nonzero };//传进去的参数分别是"第一个点"和"最后一个点"private void Domousemove(Point start, Point end) {//path为滑动的各个点形成的集合//GetWidenedPathGeometry(Pen pen):是获取通过画笔形成的形状,里面的对象是"Pen"//将这个"Pen"笔的颜色设置成"Brushes.Red",大小是通过绑定"PenWidth"属性(PenWidth是可以根据实际情况设置的)//StartLineCap /EndLineCap 分别为画笔起点与笔画末端使用的形状类型var path = new LineGeometry(start, end).GetWidenedPathGeometry(new Pen(Brushes.Red, PenWidth) { StartLineCap = PenLineCap.Round, EndLineCap = PenLineCap.Round });geometries.Children.Add(path);//Geometry 是形成图形的属性;Geometry = geometries;}

总结:简单的Demo可以用具体的一个定值来做实验,但在具体的实例中或这个项目可能就要用到许多的对象引入,属性的传入以及相关的绑定等

使用WPF与C#实现鼠标画线相关推荐

  1. VTK 鼠标画线(点移动线可同步更新)

    鼠标交互事件:点两个点形成一条线 通过鼠标点两个点,同时标记这两个点,形成一条线.(只有一条线,并不是每次点两个点都会新出现一条线) 这个版本是个初级版本,(后面我也实现了任意拖动一个点,直线会相应发 ...

  2. Matlab GUI鼠标画线

    (代码: 1\UI_line.m) % 窗体打开前,先执行该函数 function UI_line_OpeningFcn(hObject, eventdata, handles, varargin)h ...

  3. 【Unity技术积累】实现鼠标画线功能 LineRenderer

    using System.Collections; using System.Collections.Generic; using UnityEngine;public class Painting ...

  4. C++MFC最简易画板-移动鼠标画线

    命名文件为LINE,在LINEView.cpp中打开类向导添加一个CPoint类型的变量mPrevPoint,用于存储按下鼠标左键时上一个位置的点. 同样在LINEView.cpp的类向导中,找到WM ...

  5. VC++ 利用MFC的CWindowDC类实现画线功能 在桌面窗口中画线 绘制彩色线条 CPen nPenStyle nWidth crColor

    目录 利用MFC的CWindowDC类实现画线功能 在桌面窗口中画线 绘制彩色线条 CPen nPenStyle nWidth crColor 接上:VC++ 绘制线条 OnLButtonDown函数 ...

  6. TapTap物理画线游戏,使用Unity实现2D物理画线功能

    实现效果如下: 本工程已上传到GitHub,感兴趣的同学可自行下载学习. GitHub地址:https://github.com/linxinfa/UnityPhysicsDrawLine 物理画线的 ...

  7. 【游戏开发实战】TapTap物理画线游戏,教你使用Unity实现2D物理画线功能,看到我为你画的彩虹了吗

    文章目录 一.前言 二.思考 三.验证我们的思考 1.创建物体挂组件 2.设置组件参数 3.运行测试 4.结论 四.撸起袖子写代码 1.Line.cs 2.LinesDrawer.cs 五.场景 六. ...

  8. c++ --- 画线小工具

    c++ --- 封装按钮类_考拉爱睡觉鸭~的博客-CSDN博客 画线 - - - 鼠标左键按下 + 移动 - - - 两个消息的处理 testDrawTool.cpp         主函数部分 #i ...

  9. Mapabc通过鼠标画点线面,取得各元素坐标。

    private function tbb_itemClickHandler(event:ItemClickEvent):void { if (_HuiZhiGongJuUI.tbb.selectedI ...

最新文章

  1. Linux web 网站服务器 虚拟主机
  2. [信号处理技术]关于EMD的产生
  3. 【黑客免杀攻防】读书笔记6 - PE文件知识在免杀中的应用
  4. 十九. Python基础(19)--异常
  5. java其他进程,Java进程优先于其他Windows进程
  6. ranger管mysql_添加Kafka的Ranger访问权限策略
  7. linux-文件的删除与创建
  8. R语言data manipulation学习笔记之创建变量、重命名、数据融合
  9. jackson json的使用
  10. Atitit 人员级别评定法 目录 1.1. 十级评定法1--10 vs 年级评定法 1 1.2. 工龄评定 职级 岗位级别 1 2. 修订系数 学历*授课+绩效 1 3. 计算方法 1
  11. 【路径规划】基于matlab改进的蚁群算法机器人栅格地图避障路径规划【含Matlab源码 905期】
  12. Python 每日一记1启程
  13. 电驴瘫痪网友纷纷“哀悼” 官网称线路故障10日恢复
  14. ardupilot 关于设备车Rover的学习《1》------如何编译下载
  15. 软件测试的基础知识(四)
  16. Windows10下安装Wamp Server(wamp5_1.7.4)-图文教程
  17. 花生米三连发(动规)
  18. Java笔试题(一)单选题
  19. js 截取某个字符前面或者后面的字符串
  20. android 8 zuk,ZUK Z2正式升级安卓8.0,老用户感动

热门文章

  1. 【毒鸡汤】基层管理如果没有这些心态,难!
  2. windows无法连接到打印机_同事的电脑无法访问,共享打印机连接不上,问题都在这...
  3. 从拼多多解析社交电商
  4. winUSB设备的开发方法
  5. OpenCV开发笔记(四十九):红胖子8分钟带你深入了解轮廓识别(图文并茂+浅显易懂+程序源码)
  6. 绘制系列(五)-DrawText()详解
  7. 红警职教智能硬件电子电路基础版教材与配套视频资源即将开发完毕
  8. [享学Eureka] 二十二、DiscoveryClient服务注册的小工具:InstanceInfoReplicator
  9. 基于SVM的猫咪图片识别器
  10. 《遥远的救世主》遵守客观规律(六)——文化属性