鼠标点的读取

  • 首先需要在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. 京东智能内容创作算法的演进与实践:基于关键词自动生成摘要
  2. 开发者被要求向破解者道歉,竟揪出“阿里云假员工”,网友:这人有前科
  3. C++ 类的静态成员详细讲解
  4. 皮一皮:这个职业是我想得那样吗?
  5. 面试:HashMap 夺命二十一问!
  6. android 树形目录结构的实现(包含源码)
  7. 编译原理 之 解释器
  8. 解决Button在IE6、7下的自适应宽度问题
  9. [译] APT分析报告:03.OpBlueRaven揭露APT组织Fin7/Carbanak(上)Tirion恶意软件
  10. Sharepoint学习笔记 –架构系列—10 Sharepoint的服务器端对象模型(Server Object Model) 2.内容层次结构
  11. String练习代码保存
  12. MySQL高级篇(事务视图存储过程与函数)
  13. python变量自加一_Python个人练习项目 2-1
  14. 如何获取e.printStackTrace()的内容
  15. Pandas 求余运算
  16. VS对.ini文件的操作
  17. python解包裹_python-之基本语法
  18. 在那里可以下载jar包?
  19. “国防七子”经费暴增,清华再增45亿,甩第二名101亿 |全国高校2022预算大公开...
  20. Ueditor编辑器修改字体和字号?

热门文章

  1. 技术面常见问题(持续更新)
  2. lisp 套料_【CAD二次开发CAD定制开发cad插件开发LISP开发】- 中国工程机械网
  3. 删除项目的SVN信息 取消项目的SVN关联 简单粗暴
  4. MinGW介绍与使用
  5. 学前端到了CSS阶段,你一定要掌握这9大防御式开发技能
  6. 精神病学专科哪家强?且看最新医院排行榜
  7. docker 容器运行后不退出
  8. 在线视频网站加密技术详解
  9. python美化excel_Python 使用 prettytable 库打印表格(美化输出)
  10. 【C++进阶知识】C++类的继承和派生