WPF效果第一百九十七篇之Path范围内拖拽

前面效果中分享了彩色马蹄图的效果;这不今天再次在马蹄图的基础上,实现只能在Path内的拖拽效果;闲话不多扯直接看效果:

1、关于拖拽顶点实现色域范围选择,参考:

https://www.codeproject.com/Tips/828310/The-simplest-WPF-diagram-designer-part

2、通过Blend绘制了色度图中间区域的Path:

<Path Data="M95.75,76 L92.9375,78.6875 90.936644,81.186535 89.24817,82.935546 87.310123,86.185366 C87.310123,86.185366 85.310174,90.058861 85.122632,90.058861 84.93509,90.058861 83.934871,92.371344 83.934871,92.371344 L82.810165,94.183441 80.685364,98.619329 79.060687,103.1182 77.309941,107.80453 75.996727,111.42806 74.996561,115.11403 74.308945,117.98822 72.621704,123.92405 70.746437,132.10985 69.746295,138.04575 68.871167,142.48258 67.18343,151.41775 66.183801,161.60202 65.245666,167.64207 64.66225,174.22327 64.245183,181.88785 C64.245183,181.88785 63.745109,188.2191 63.745109,188.63566 63.745109,189.05221 63.870129,197.96605 63.870129,197.96605 L62.994995,206.33872 62.494919,220.33482 63.120014,235.45561 63.370053,250.45144 63.870129,259.07403 64.661917,270.61249 65.161993,286.60767 67.162299,304.26902 68.162451,322.43092 69.662681,334.59416 71.079564,344.59103 71.57964,355.00442 73.163216,364.16884 74.33006,375.83224 75.371886,384.78771 77.184663,395.59716 78.559873,405.28142 79.872574,414.15388 81.247784,422.31822 83.081398,431.56524 84.164897,441.64536 86.498586,453.64192 89.249007,467.88783&#xd;&#xa;92.06181,484.44595 95.56233,502.25338 99.125359,518.37379 101.16733,528.20432 106.25142,548.8651 110.66874,567.35983 112.66904,574.60777 115.08606,583.43859 117.83647,593.01919 120.87972,600.7881 124.58747,613.18011 127.75461,622.34417 130.00495,629.42549 135.67245,645.6292 139.00714,653.58502 143.19531,664.76933 145.75729,670.39298 148.3826,675.7027 150.38289,679.95148 154.44608,688.01296 157.07087,693.07319 159.82075,696.94707 162.32161,700.57104&#xd;&#xa;164.88499,704.19501 168.57302,708.63124 173.01066,713.50533 177.32378,717.62863 181.51239,721.25307 184.63785,724.37666 187.07571,726.68899 189.01399,727.93861 190.51422,728.12605 192.3895,726.93938 196.39011,724.81498 200.70327,723.003 205.51599,720.50371 214.26728,716.3174 222.64352,712.1311 228.83194,708.94451 237.83379,704.63324 246.3356,700.50941 254.46237,696.94793 259.52515,694.07375 273.02722,687.38815 286.71682,680.64008 300.46841,673.892&#xd;&#xa;320.15835,664.70712 327.78449,660.89571 335.78568,656.95933 344.30778,652.73137 352.10043,648.98244 356.78914,646.42067 374.04171,638.17302 387.58542,631.17502 408.67156,621.21952 433.80032,609.34791 471.80571,590.47825 513.56224,570.1091 557.35995,548.97107 581.94696,536.47463 592.07429,532.07828 600.07476,527.99605 604.24205,525.99662 607.40919,524.41373 609.07605,523.53898 610.20122,522.95582 611.15934,522.12272 610.20086,521.41459 607.1591,517.74897&#xd;&#xa;604.242,514.66651 600.99152,511.20916 597.85564,507.59561 594.19885,503.72171 591.32342,500.69132 587.15618,496.2135 582.48882,491.29824 577.7589,486.3829 574.25839,482.63397 570.98756,479.33292 566.75731,474.73005 565.06952,473.01171 562.2566,470.13753 559.94376,467.45079 553.77622,460.97355 547.47316,454.39201 542.0036,448.39372 537.64878,443.52011 530.60611,436.10564 528.20992,433.50222 524.50104,429.69081 521.66728,426.87911 512.06169,416.73617&#xd;&#xa;501.01838,405.03117 492.35043,395.7005 475.30623,377.53901 460.86659,362.29336 444.13494,345.25655 431.2997,331.01061 416.67249,315.97311 401.71194,299.68608 391.54376,288.93914 384.61567,281.26471 379.50031,276.19278 374.32248,270.56952 370.04057,266.44555 366.29001,262.61331 362.28945,258.61459 356.7886,252.65781 351.9129,247.3678 348.20402,243.36894 342.95324,237.87051 339.84861,234.76723 334.22278,228.83142 329.36787,224.16593 325.24225,220.08376&#xd;&#xa;323.49199,217.87605 319.84564,214.12728 316.88687,210.8782 313.28217,207.25424 308.61481,202.79718 303.73908,197.44454 299.92602,193.67478 295.94626,189.71757 292.32072,185.96864 287.23663,181.42827 283.56942,177.53355 278.13111,172.63911 273.85965,168.64025 268.69221,163.84995 256.02366,152.16578 244.89701,142.2936 243.08424,140.45037 239.23992,137.01385 235.67689,133.63981 228.20703,127.45408 222.39367,122.86164 216.11148,117.67562 211.70458,114.20785&#xd;&#xa;206.66216,110.34437 200.59876,105.88731 195.86889,102.61741 189.30542,98.202002 185.8049,95.952644 180.09571,92.203521 174.5949,88.621401 162.69729,81.87313 149.69537,75.250214 145.17387,73.250784 139.49073,70.985807 134.53686,69.126761 130.16121,67.720911 123.67067,66.919431 120.87859,66.643137 117.87814,66.335556 116.14872,66.419199 114.77352,66.440026 113.27329,66.689955 111.81474,66.939884 110.06448,67.29395 108.46008,67.814635 106.50145,68.626903&#xd;&#xa;104.60534,69.626619 102.81341,70.584679 101.35486,71.501085 99.625434,72.646592 98.166884,73.667134 96.958371,74.708504 96.395787,75.333326 z"Name="ColorSpaceBackPath" Fill="#02FFFFFF" Stretch="Fill" Height="661.979" Width="548.583"Canvas.Left="1.5" Canvas.Top="54.3"Stroke="Transparent" StrokeThickness="0"/>

3、查了资料说可以用下面方式:

ColorSpaceBackPath.Data.FillContains(point);

4、效果是有了,可能是我姿势不对,没达到我的预期;这时我又无脑的想到了HitTest,毕竟前面也玩了好几次了;再玩一次也能接受:

VisualTreeHelper.HitTest(MyCanvas, new HitTestFilterCallback(OnHitTestFilterCallback), new HitTestResultCallback(OnHitTestResultCallback), new PointHitTestParameters(currentPoint));

5、在OnHitTestFilterCallback中:

string name = path.Name;
if(name.Equals("ColorSpaceBackPath"))
{return HitTestFilterBehavior.ContinueSkipChildren;
}

6、在OnHitTestResultCallback中:

Path path = result.VisualHit as Path;
if(path != null)
{string name = path.Name;if(name.Equals("ColorSpaceBackPath")){CurrentShape.Left = CurrentPoint.X;CurrentShape.Top = CurrentPoint.Y;return HitTestResultBehavior.Stop;}
}

最终简单的效果先这样吧02a261ad0e8a85a6e35bc88774b782b8.png;以后有时间的话,可以再去摸索一下更复杂的效果9935ab284f821d93ae58847eae210f61.png;编程不息、Bug不止、无Bug、无生活b2228e67f12f230fecf85d2ce48b2720.png;改bug的冷静、编码的激情、完成后的喜悦、挖坑的激动 、填坑的兴奋;这也许就是屌丝程序员的乐趣吧;今天就到这里吧;希望自己有动力一步一步坚持下去;生命不息,代码不止;大家抽空可以看看今天分享的效果,有好的意见和想法,可以在留言板随意留言;我看到后会第一时间回复大家,多谢大家的一直默默的关注和支持!如果觉得不错,那就伸出您的小手点个赞并关注一下!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/283263.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PHP面向对象常见的关键字和魔术方法

在PHP5的面向对象程序设计中提供了一些常见的关键字&#xff0c;用来修饰类、成员属性或成员方法&#xff0c;使他们具有特定的功能&#xff0c;例如final、static、const等关键字。还有一些比较实用的魔术方法&#xff0c;用来提高类或对象的应用能力&#xff0c;例如__call()…

如何在论文中自动生成标准的参考文献格式

首先下载EndNote软件&#xff0c;word中会自动显示EndNote选项 选择EndNote 选择导出会下载一个txt文件 打开EndNote中向下的箭头导入&#xff08;从文件导入文献到库中&#xff09;找到刚才下载的txt文件 点击选择按键找到txt文件 选择打开即可 选择导入 选择导入的内容…

PrincetonAlgorithm I - Assignment2 Deques and Randomized Queues

Programming Assignment2 - Deque and Randomized Queues Review Assignment Specification 课程笔记 Subtext: Modular Programming Stacks and Queues are fundamental data types Value: collection of objectsBasic Operation: insert, remove, iterate.Difference: which …

TCP短连接产生大量TIME_WAIT导致无法对外建立新TCP连接的原因及解决方法—基础知识篇...

最近遇到一个线上报警&#xff1a;服务器出现大量TIME_WAIT导致其无法与下游模块建立新HTTP连接&#xff0c;在解决过程中&#xff0c;通过查阅经典教材和技术文章&#xff0c;加深了对TCP网络问题的理解。作为笔记&#xff0c;记录于此。 备注&#xff1a;本文主要介绍…

开源许可证,欢迎来到云时代

出品 | OSC开源社区&#xff08;ID&#xff1a;oschina2013)作者 | 唐建法前言开源许可证从最早的 GPL 开始&#xff0c; 逐渐演进到 GPLv2 和 v3&#xff0c;中间还有 Apache、MPL、AGPL、LGPL 等&#xff0c;但是近几年来有一批新的许可证的出现&#xff0c;引起了社区的一些…

selenium - Select类 - 下拉框

WebDriver提供了Select类来处理下拉框。 如百度搜索设置的下拉框&#xff0c;如下图&#xff1a; from selenium import webdriver from selenium.webdriver.support.select import Select from time import sleepdriver webdriver.Chrome() driver.implicitly_wait(10) drive…

.NET 7 预览版 7

点击上方蓝字关注我们&#xff08;本文阅读时间&#xff1a;12分钟)今天我们发布了 .NET 7 预览版 7。这是 .NET 7 的最后一个预览版&#xff0c;下一个版本将是我们的第一个候选版本 &#xff08;RC&#xff09;。.NET Conf 2022 的日期已经公布&#xff01;请于 2022 年 11 月…

android--------volley之网络请求和图片加载

为什么80%的码农都做不了架构师&#xff1f;>>> Volley是 Google 推出的 Android 异步网络请求框架和图片加载框架。 Volley的特性 封装了的异步的请求API。Volley 中大多是基于接口的设计&#xff0c;可配置性强。一个优雅和稳健的请求队列&#xff0c;一定程度符…

经典算法学习——冒泡排序

冒泡排序是我们学习的第一种排序算法。应该也算是最简单、最经常使用的排序算法了。无论怎么说。学会它是必定的。今天我们就用C语言来实现该算法。演示样例代码已经上传至&#xff1a;https://github.com/chenyufeng1991/BubbleSort算法描写叙述例如以下&#xff1a;&#xff…

Mybatis之设计模式之装饰者模式

了解&#xff0c;什么是装饰者模式? 1.定义 装饰模式是在不必改变原类文件和使用继承的情况下&#xff0c;动态地扩展一个对象的功能。它是通过创建一个包装对象&#xff0c;也就是装饰来包裹真实的对象。 2.特点 1 装饰对象和真实对象有相同的接口。这样客户端对象就能以和真…

一天掌握Android JNI本地编程 快速入门

一、JNI&#xff08;Java Native Interface&#xff09; 1、什么是JNI&#xff1a;JNI(Java Native Interface):java本地开发接口JNI是一个协议&#xff0c;这个协议用来沟通java代码和外部的本地代码(c/c) 外部的c/c代码也可以调用java代码2、为什么使用JNI&#xff1a;效率上…

[转]CentOS 7忘记root密码解决办法

转自&#xff1a;http://www.linuxidc.com/Linux/2016-08/134034.htm 亲测可用&#xff01; CentOS 7 root密码的重置方式和CentOS 6完全不一样&#xff0c;CentOS 7与之前的版本6变化还是比较大的&#xff0c;以进入单用户模式修改root密码为例。 1.重启开机按esc 2.按e 3.编…

美链BEC合约漏洞技术分析

这两天币圈链圈被美链BEC智能合约的漏洞导致代币价值几乎归零的事件刷遍朋友圈。这篇文章就来分析下BEC智能合约的漏洞 <!-- more --> 漏洞攻击交易 我们先来还原下攻击交易&#xff0c;这个交易可以在这个链接查询到。我截图给大家看一下&#xff1a; 攻击者向两个账号转…

vue 公众号扫描_vue编写微信公众号打开相机功能

vue编写微信公众号打开相机功能&#xff0c;什么都不多说直接上代码页面布局代码class"previewer-demo-img":key"index":src"item.src"width"100"click"previewImg(index)">1.微信config初始化前端代码initWxConfig() {l…

SQL Server-聚焦NOT IN VS NOT EXISTS VS LEFT JOIN...IS NULL性能分析(十八)

前言 本节我们来综合比较NOT IN VS NOT EXISTS VS LEFT JOIN...IS NULL的性能&#xff0c;简短的内容&#xff0c;深入的理解&#xff0c;Always to review the basics。 NOT IN、NOT EXISTS、LEFT JOIN...IS NULL性能分析 我们首先创建测试表 USE TSQL2012 GOCREATE SCHEMA [c…

global using 的另类用法

前言global using 指令在 C# 10 中被引入&#xff0c;意味着 using 将应用于编译中的所有文件&#xff08;通常是一个项目&#xff09;。比如&#xff1a;global using System.Text;则在同一项目的其他位置&#xff0c;可以直接使用 System.Text 下的所有类型而无需再次声明 us…

利用 Node.js 实现 SAP Hana 数据库编程接口

为什么80%的码农都做不了架构师&#xff1f;>>> 自 SAP HANA SP 11 之后&#xff0c;可以使用 Node.js 作为 Hana 的编程接口。SAP 将 Application server 简称为 XS。现在 XS 已经演化为 Advanced 版本。为了区别&#xff0c;早期的 XS 被称为 XS Classical。 从下…

WPF 实现自绘验证码

WPF 实现自绘验证码控件名&#xff1a;VerifyCode作者&#xff1a;WPFDevelopersOrg原文链接&#xff1a; https://github.com/WPFDevelopersOrg/WPFDevelopers框架使用大于等于.NET40&#xff1b;Visual Studio 2022;项目使用 MIT 开源许可协议&#xff1b;如何通过DrawingV…

css中的单位换算_CSS单位px、em、rem及它们之间的换算关系

作者:WangMin格言:努力做好自己喜欢的每一件事国内的设计师大都喜欢用px&#xff0c;而国外的网站大都喜欢用em和rem&#xff0c;那么三者的区别与优势是什么&#xff1f;接下来我们就来学习一下吧&#xff01;单位px、em、rem分别表示什么&#xff1f;1、 px(Pixel) 相对于显示…

【MAC】Ncnn 编译so文件方案

【MAC】Ncnn 编译so文件方案 1、下载ncnn github地址是&#xff1a;https://github.com/Tencent/ncnn 指定目录&#xff1a;在终端或者git管理工具 输入&#xff1a;git clone https://github.com/Tencent/ncnn.git 2、编译Ncnn 2.1 Mac平台 安装cmake、wget&#xff08;根据实…