使用WPF与C#实现鼠标画线
鼠标点的读取
- 首先需要在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#实现鼠标画线相关推荐
- VTK 鼠标画线(点移动线可同步更新)
鼠标交互事件:点两个点形成一条线 通过鼠标点两个点,同时标记这两个点,形成一条线.(只有一条线,并不是每次点两个点都会新出现一条线) 这个版本是个初级版本,(后面我也实现了任意拖动一个点,直线会相应发 ...
- Matlab GUI鼠标画线
(代码: 1\UI_line.m) % 窗体打开前,先执行该函数 function UI_line_OpeningFcn(hObject, eventdata, handles, varargin)h ...
- 【Unity技术积累】实现鼠标画线功能 LineRenderer
using System.Collections; using System.Collections.Generic; using UnityEngine;public class Painting ...
- C++MFC最简易画板-移动鼠标画线
命名文件为LINE,在LINEView.cpp中打开类向导添加一个CPoint类型的变量mPrevPoint,用于存储按下鼠标左键时上一个位置的点. 同样在LINEView.cpp的类向导中,找到WM ...
- VC++ 利用MFC的CWindowDC类实现画线功能 在桌面窗口中画线 绘制彩色线条 CPen nPenStyle nWidth crColor
目录 利用MFC的CWindowDC类实现画线功能 在桌面窗口中画线 绘制彩色线条 CPen nPenStyle nWidth crColor 接上:VC++ 绘制线条 OnLButtonDown函数 ...
- TapTap物理画线游戏,使用Unity实现2D物理画线功能
实现效果如下: 本工程已上传到GitHub,感兴趣的同学可自行下载学习. GitHub地址:https://github.com/linxinfa/UnityPhysicsDrawLine 物理画线的 ...
- 【游戏开发实战】TapTap物理画线游戏,教你使用Unity实现2D物理画线功能,看到我为你画的彩虹了吗
文章目录 一.前言 二.思考 三.验证我们的思考 1.创建物体挂组件 2.设置组件参数 3.运行测试 4.结论 四.撸起袖子写代码 1.Line.cs 2.LinesDrawer.cs 五.场景 六. ...
- c++ --- 画线小工具
c++ --- 封装按钮类_考拉爱睡觉鸭~的博客-CSDN博客 画线 - - - 鼠标左键按下 + 移动 - - - 两个消息的处理 testDrawTool.cpp 主函数部分 #i ...
- Mapabc通过鼠标画点线面,取得各元素坐标。
private function tbb_itemClickHandler(event:ItemClickEvent):void { if (_HuiZhiGongJuUI.tbb.selectedI ...
最新文章
- 京东智能内容创作算法的演进与实践:基于关键词自动生成摘要
- 开发者被要求向破解者道歉,竟揪出“阿里云假员工”,网友:这人有前科
- C++ 类的静态成员详细讲解
- 皮一皮:这个职业是我想得那样吗?
- 面试:HashMap 夺命二十一问!
- android 树形目录结构的实现(包含源码)
- 编译原理 之 解释器
- 解决Button在IE6、7下的自适应宽度问题
- [译] APT分析报告:03.OpBlueRaven揭露APT组织Fin7/Carbanak(上)Tirion恶意软件
- Sharepoint学习笔记 –架构系列—10 Sharepoint的服务器端对象模型(Server Object Model) 2.内容层次结构
- String练习代码保存
- MySQL高级篇(事务视图存储过程与函数)
- python变量自加一_Python个人练习项目 2-1
- 如何获取e.printStackTrace()的内容
- Pandas 求余运算
- VS对.ini文件的操作
- python解包裹_python-之基本语法
- 在那里可以下载jar包?
- “国防七子”经费暴增,清华再增45亿,甩第二名101亿 |全国高校2022预算大公开...
- Ueditor编辑器修改字体和字号?