WPF 简单绘制矩形
Canvas 画矩形:
view和viewModel 绑定一起才显示移动轨迹(可以定义一个string 看是否绑定属性的路径是正确的)
前台(绑定事件和显示移动的线):
<Canvas Name="canvas" Background="#01FFFFFF" PreviewMouseLeftButtonDown="VDM_MouseLeftButtonDown" PreviewMouseMove="VDM_MouseMove"PreviewMouseLeftButtonUp="VDM_MouseLeftButtonUp">
</Canvas><Canvas><Rectangle IsHitTestVisible="False" Stroke="Red" x:Name="rect"StrokeDashArray="1,2" StrokeThickness="1" Stretch="Fill" Width="{Binding RectWidth}" Height="{Binding RectHeight}" Canvas.Left="{Binding RectLeft}" Canvas.Top="{Binding RectTop}"/>
</Canvas>
后台:
若view和其他viewmodel绑定了 可以用(rect.DataContext = Model; DVMModel Model = new DVMModel(); DVMModel属性定义)
如果view和后台绑定:
bool is_LeftButtonDown = false;public void VDM_MouseLeftButtonDown(object view, MouseButtonEventArgs e)
{Canvas canvas = view as Canvas;Point pt = Mouse.GetPosition(canvas);downPt = pt;is_LeftButtonDown = true;if (pt.X < 0 || pt.X > canvas.ActualWidth || pt.Y < 0 || pt.Y > canvas.ActualHeight){is_LeftButtonDown = false;}
}
鼠标移动绘制矩形
public void VDM_MouseMove(object view, MouseEventArgs e)
{//鼠标坐标点Point pt = Mouse.GetPosition(view as Canvas);if (is_LeftButtonDown && e.LeftButton == MouseButtonState.Pressed) //确定鼠标左键处于按下状态{isMove = true;if (pt.X < 0 || pt.X > canvas.ActualWidth || pt.Y < 0 || pt.Y > canvas.ActualHeight){is_LeftButtonDown = false;Model.RectHeight = 0;Model.RectWidth = 0;}else{double left = (downPt.X < pt.X) ? downPt.X : pt.X;double top = (downPt.Y < pt.Y) ? downPt.Y : pt.Y;double width = Math.Abs(downPt.X - pt.X);double height = Math.Abs(downPt.Y - pt.Y);// 画矩形Model.RectLeft = left;Model.RectTop = top;Model.RectWidth = width;Model.RectHeight = height;canvas.CaptureMouse(); //捕获鼠标}}
}
鼠标弹起完成矩形绘制
public void VDM_MouseLeftButtonUp(object view, MouseButtonEventArgs e)
{Canvas canvas = view as Canvas;if (is_LeftButtonDown && isMove){is_LeftButtonDown = false;isMove = false;Point pt = Mouse.GetPosition(canvas);double Wscale = canvas.ActualWidth / SingalSize.Width; //SingalSize 分辨率double Hscale = canvas.ActualHeight / SingalSize.Height;double left = (downPt.X < pt.X) ? downPt.X : pt.X;double top = (downPt.Y < pt.Y) ? downPt.Y : pt.Y;double width = Math.Abs(pt.X - downPt.X);double height = Math.Abs(pt.Y - downPt.Y);OsdStartX.Text = Convert.ToInt32(left).ToString();OsdStartY.Text = Convert.ToInt32(top).ToString();if (width * Wscale > 512)HLength.Text = "512";elseHLength.Text = Convert.ToInt32(width * Wscale).ToString();if (height * Hscale > 64)VLength.Text = "64";elseVLength.Text = Convert.ToInt32(height * Hscale).ToString();// 画矩形Model.RectHeight = 0;Model.RectWidth = 0;canvas.ReleaseMouseCapture(); //释放捕获鼠标}
}
相关文章:
WPF 简单绘制矩形
Canvas 画矩形: view和viewModel 绑定一起才显示移动轨迹(可以定义一个string 看是否绑定属性的路径是正确的) 前台(绑定事件和显示移动的线): <Canvas Name"canvas" Background"#01FF…...
crui_lvgl 一个LVGL的DSL辅助工具的设想
设想 Target以LVGL为目标,语法以CSS为Reference。 CSS 规范 略 CSS规范最强大的属于CSS自身的属性很多,可以通过class和伪属性选择器对UI进行直接控制。 QML规范 ApplicationWindow {visible: truewidth: Constants.widthheight: Constants.height…...
公共部门生成式人工智能的未来
作者:Dave Erickson 最近,我与 IDC Government Insights 研究副总裁阿德莱德奥布莱恩 (Adelaide O’Brien) 坐下来讨论了全球公共部门生成式人工智能的当前和未来状况。 完整的对话可以按需查看,但我也想强调讨论中的一些要点。 我们的目标是…...
【报名】2023产业区块链生态日暨 FISCO BCOS 开源六周年生态大会
作为2023深圳国际金融科技节系列活动之一,由深圳市地方金融监督管理局指导,微众银行、金链盟主办的“2023产业区块链生态日暨FISCO BCOS开源六周年生态大会”将于12月15日下午14:00在深圳举办。 今年的盛会将进一步升级,以“FISCO BCOS和TA的…...
MySQL之性能分析和系统调优
MySQL之性能分析和系统调优 性能分析 查看执行计划 EXPLAIN EXPLAIN作为MySQL的性能分析神器,可以用来分析SQL执行计划,需要理解分析结果可以帮助我们优化SQL explain select … from … [where ...]TABLE 表名 查询的每一行记录都对于着一张表 id 该…...
时间复杂度为 O(n^2) 的排序算法 | 京东物流技术团队
对于小规模数据,我们可以选用时间复杂度为 O(n2) 的排序算法。因为时间复杂度并不代表实际代码的执行时间,它省去了低阶、系数和常数,仅代表的增长趋势,所以在小规模数据情况下, O(n2) 的排序算法可能会比 O(nlogn) 的…...
关于前端学习的思考-内边距、边框和外边距
从最简单的盒子开始思考 先把实际应用摆出来: margin:居中,控制边距。 padding:控制边距。 border:制作三角形。 盒子分为内容盒子,内边距盒子,边框和外边距。 如果想让块级元素居中&#…...
【linux】/etc/security/limits.conf配置文件详解、为什么限制、常见限制查看操作
文章目录 一. limits.conf常见配置项详解二. 文件描述符(file descriptor)简述三. 为什么限制四. 相关操作1. 展示当前资源限制2. 查看系统当前打开的文件描述符数量3. 查看某个进程打开的文件描述符数量4. 各进程占用的文件描述符 /etc/security/limits…...
Windows系统下更新后自带的画图软件出现马赛克bug
一.bug的样子🍗 在使用橡皮后,原来写的内容会变成马赛克。而我们希望它是纯白色的。 二.解决方法🍗 第一步 第二步 第三步 三. 解决后的效果🍗 用橡皮擦随便擦都不会出现马赛克了。 更新过后,想用win自带的画图软件会出…...
[HTML]Web前端开发技术6(HTML5、CSS3、JavaScript )DIV与SPAN,盒模型,Overflow——喵喵画网页
希望你开心,希望你健康,希望你幸福,希望你点赞! 最后的最后,关注喵,关注喵,关注喵,佬佬会看到更多有趣的博客哦!!! 喵喵喵,你对我真的…...
SQL练习
建数据库: mysql> create database worker; Query OK, 1 row affected (0.00 sec) mysql> CREATE TABLE worker (-> 部门号 int(11) NOT NULL,-> 职工号 int(11) NOT NULL,-> 工作时间 date NOT NULL,-> 工资 float(8,2) NOT NULL,-> 政治面貌…...
创始人于东来:胖东来员工不想上班,请假不允许不批假!
12月2日早晨,一则关于“胖东来员工不想上班请假不允许不批假”的新闻登上了热搜,引起了广泛关注。熟悉胖东来的网友们可能知道,这并不是这家企业第一次成为热搜的焦点。据白鹿视频12月1日报道,11月25日,河南许昌的胖东…...
C++学习之路(十五)C++ 用Qt5实现一个工具箱(增加16进制颜色码转换和屏幕颜色提取功能)- 示例代码拆分讲解
上篇文章,我们用 Qt5 实现了在小工具箱中添加了《Base64图片编码预览功能》功能。为了继续丰富我们的工具箱,今天我们就再增加两个平时经常用到的功能吧,就是「 16进制颜色码转RGB文本 」和 「屏幕颜色提取」功能。下面我们就来看看如何来规划…...
【STM32】EXTI外部中断
1 中断系统 1.1 中断简介 中断:在主程序运行过程中,出现了特定的中断触发条件(中断源),使得CPU暂停当前正在运行的程序,转而去处理中断程序,处理完成后又返回原来被暂停的位置继续运行。 比如&a…...
Linux系统的常见命令十三,显示系统进程状态、文件权限、修改文件或目录所有者和所属组命令(ps、chmod和chown)
本文主要介绍Linux系统的显示系统进程状态、文件权限、修改文件或目录所有者和所属组命令,(ps、chmod和chown) 目录 显示系统进程状态文件权限设置(chmod)修改文件或目录所有者和所属组(chown) …...
Python 批量修改文件名
主要步骤 通过os.listdir查看该文件夹下所有的文件(包括文件夹)遍历所有文件,如果是文件夹则跳过,或指定跳过指定文件获取文件扩展名按照需求生成新的文件路径文件名进行重命名 代码示例 # -*- coding: utf-8 -*- import osdef…...
git的基本命令操作超详细解析教程
Git基础教学 1、初始化配置2、初始化仓库3、工作区域和文件状态4、添加和提交文件5、git reset 回退版本6、git diff查看差异7、删除文件git rm8、.gitignore9、本地文件提交到远程仓库10、分支基础 Git:一个开源的分布式版本控制系统,它可以在本地和远程…...
【代码】两阶段鲁棒优化/微电网经济调度入门到编程
内容包括 matlab-yalmipcplex微电网两阶段鲁棒经济调度(刘) matlab-yalmipcplex两阶段鲁棒微电网容量经济优化调度 两阶段鲁棒优化CCG列于约束生成和Benders代码,可扩展改编,复现自原外文论文 【赠送】虚拟储能单元电动汽车建…...
【图论】重庆大学图论与应用课程期末复习资料2-各章考点(填空证明部分)(私人复习资料)
图论各章考点 一、图与网络的基本概念二、树三、连通性四、路径算法五、匹配六、行遍性问题七、平面图 一、图与网络的基本概念 生成子图:生成子图 G ’ G’ G’中顶点个数V’必须和原图G中V的数量相同,而 E ’ ∈ E E’∈E E’∈E即可。顶点集导出子图…...
基于Intel® AI Analytics Toolkits的智能视频监控系统
【oneAPI DevSummit & OpenVINODevCon联合黑客松】 跳转链接:https://marketing.csdn.net/p/d2322260c8d99ae24795f727e70e4d3d 目录 1方案背景 2方案描述 3需求分析 4技术可行性分析 5详细设计5.1数据采集 5.2视频解码与帧提取 5.3人脸检测 5.4行为识别…...
3步构建专业级无人机应用:DJI Android SDK V5实战指南
3步构建专业级无人机应用:DJI Android SDK V5实战指南 【免费下载链接】Mobile-SDK-Android-V5 MSDK V5 Sample 项目地址: https://gitcode.com/gh_mirrors/mo/Mobile-SDK-Android-V5 想要快速开发功能完善的无人机应用?DJI Android SDK V5为开发…...
ElevenLabs瑞典文语音生成延迟超800ms?独家逆向分析其WebRTC音频缓冲机制,给出3行代码级低延迟注入方案
更多请点击: https://codechina.net 第一章:ElevenLabs瑞典文语音生成延迟超800ms?独家逆向分析其WebRTC音频缓冲机制,给出3行代码级低延迟注入方案 ElevenLabs 在瑞典语(sv-SE)TTS 服务中默认启用高保真音…...
Hertz.dev实时音频对话实战:构建智能语音助手的最佳实践指南
Hertz.dev实时音频对话实战:构建智能语音助手的最佳实践指南 【免费下载链接】hertz-dev first base model for full-duplex conversational audio 项目地址: https://gitcode.com/gh_mirrors/he/hertz-dev Hertz.dev是一个开创性的全双工会话音频基础模型&a…...
从零到英雄:用AI瞄准技术彻底改变你的FPS游戏体验
从零到英雄:用AI瞄准技术彻底改变你的FPS游戏体验 【免费下载链接】yolov8_aimbot Aim-bot based on AI for all FPS games 项目地址: https://gitcode.com/gh_mirrors/yo/yolov8_aimbot 你是否曾经在激烈的枪战中因为瞄准不准而错失良机?是否羡慕…...
马来文语音合成效果差?3步诊断法+5个权威音素校准参数,立竿见影提升自然度与语调准确率
更多请点击: https://codechina.net 第一章:马来文语音合成效果差?3步诊断法5个权威音素校准参数,立竿见影提升自然度与语调准确率 马来文(Bahasa Melayu)语音合成常因音素切分模糊、重音规则缺失及语调建…...
5分钟搞定:用WinDiskWriter在Mac上制作Windows启动盘,轻松绕过TPM限制
5分钟搞定:用WinDiskWriter在Mac上制作Windows启动盘,轻松绕过TPM限制 【免费下载链接】windiskwriter 🖥 Windows Bootable USB creator for macOS. 🛠 Patches Windows 11 to bypass TPM and Secure Boot requirements. &#x…...
动手实验:在QEMU上模拟调试ATF安全启动全流程(含常见错误排查)
在QEMU虚拟环境中实战调试ATF安全启动全流程指南 1. 实验环境搭建与工具链配置 构建ATF调试环境需要精心准备工具链和依赖组件。我们推荐使用Ubuntu 20.04 LTS作为基础系统,这是目前对ARM虚拟化支持最完善的Linux发行版之一。以下是关键组件的版本要求: …...
互联网大厂Java面试实录:严肃面试官 vs. 搞笑程序员谢飞机
互联网大厂Java面试实录:严肃面试官 vs. 搞笑程序员谢飞机第一轮:基础问题 面试官:你好,谢飞机。既然你是来应聘Java开发岗位的,那我先问一些简单的问题。第一个问题,Java中的HashMap是线程安全的吗&#x…...
AI音乐操作手册:从输入提示词到导出发布全流程
现在 AI 写歌工具已经不只是生成一段背景音乐,很多工具都可以从文字描述直接生成带人声的完整歌曲。真正影响体验的不是工具名字有多热,而是它适不适合当前场景:中文歌词、短视频配乐、个人纪念歌、细分曲风或者二次编辑,判断标准…...
3分钟快速上手vJoy:如何为Windows创建专业级虚拟游戏手柄
3分钟快速上手vJoy:如何为Windows创建专业级虚拟游戏手柄 【免费下载链接】vJoy Virtual Joystick 项目地址: https://gitcode.com/gh_mirrors/vj/vJoy 您是否曾经因为缺少游戏手柄而无法畅玩那些只支持手柄操作的游戏?或者需要为特殊软件设计自定…...
