WPF 如何实现简单放大镜

 WPF 如何实现简单放大镜

控件名:Magnifier

作   者:WPFDevelopersOrg - 驚鏵

原文链接[1]:https://github.com/WPFDevelopersOrg/WPFDevelopers

  • 框架使用.NET40

  • Visual Studio 2019;

  • 实现此功能需要用到 VisualBrush ,放大镜展现使用 Canvas -> Ellipse .

    • 可以使用 VisualBrush 创建放大效果。

    • 设置 Visual 获取或设置画笔的内容。

    • 设置 ViewboxUnits Absolute 坐标系与边界框无关。

    • 设置 Viewbox 获取或设置 TileBrush 图块中内容的位置和尺寸。

  • 当鼠标移动获取当前坐标点修改 VisualBrushViewbox

  • 鼠标移动修改 EllipseCanvas.LeftCanvas.Top 跟随鼠标。

2d630f59b68d27e69bb68bc2b0e5c2e8.png1) xaml 代码如下:

<Grid><Image Source="0.png" Stretch="Fill"Name="image" MouseMove="image_MouseMove"MouseEnter="image_MouseEnter" MouseLeave="image_MouseLeave"/><Canvas IsHitTestVisible="False" Name="MagnifierPanel"><Ellipse Stroke="LightBlue" Name="MagnifierCircle" Height="200" Width="200"><Ellipse.Fill><VisualBrush x:Name="MagnifierBrush"  Visual="{Binding ElementName=image}" ViewboxUnits="Absolute"/></Ellipse.Fill></Ellipse></Canvas></Grid>

2) xaml.cs 代码如下:

private void image_MouseMove(object sender, MouseEventArgs e){var center = e.GetPosition(image);var length = MagnifierCircle.ActualWidth * _factor;var radius = length / 2;var viewboxRect = = new Rect(center.X - radius, center.Y - radius, length, length);MagnifierBrush.Viewbox = viewboxRect;MagnifierCircle.SetValue(Canvas.LeftProperty, center.X - MagnifierCircle.ActualWidth / 2);MagnifierCircle.SetValue(Canvas.TopProperty, center.Y - MagnifierCircle.ActualHeight / 2);}private void image_MouseEnter(object sender, MouseEventArgs e){MagnifierCircle.Visibility = Visibility.Visible;}private void image_MouseLeave(object sender, MouseEventArgs e){MagnifierCircle.Visibility = Visibility.Hidden;}
506bfa4f69693b8588efb7211614333e.gif

参考资料

[1]

原文链接: https://github.com/WPFDevelopersOrg/WPFDevelopers

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

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

相关文章

input 禁用智能提示_如何在智能手机上禁用紧急警报

input 禁用智能提示AMBER and emergency alerts occur when there’s a child abduction or there’s an important event such as a severe weather alert (tornado warning) that local governments needs to make people aware of. While we don’t recommend disabling the…

laravel中使用的PDF扩展包——laravel-dompdf和laravel-snappy

这两天项目中需要将HTML页面转换为PDF文件方便打印&#xff0c;我在网上搜了很多资料。先后尝试了laravel-dompdf和laravel-snappy两种扩展包&#xff0c;个人感觉laravel-snappy比较好用。 一、使用laravel-dompdf扩展包 1、安装扩展包 我们通过composer来安装 composer requi…

使用jenkins进行项目的自动构建部署

jenkins 简介 Jenkins是基于Java开发的一种持续集成工具&#xff0c;用于监控持续重复的工作&#xff0c;功能包括&#xff1a;持续的软件版本发布/测试项目和监控外部调用执行的工作。 官网地址地址&#xff1a; https://jenkins.io 下载安装启动 CentOS 下用yum进行安装启动 …

如何删除Apple Music中的连接功能

Love Apple Music, but tired of the intrusive Connect feature taking up space on your favorite artist’s page? Well, don’t worry, because getting “dis-Connected” is just a matter of changing a few simple settings in your iPhone or iPad running iOS 8.0 o…

python设计模式(十四):模板方法模式

定义一个算法或者流程&#xff0c;部分环节设计为外部可变&#xff0c;用类似于模板的思想来实例化一个实体&#xff0c;可以往模板中填充不同的内容&#xff1b;在模板思想下&#xff0c;实体的整体框架是确定的&#xff0c;他是一个模板&#xff0c;但是模板下内容可变&#…

PeeringDB初探

做网络相关工作的&#xff0c;可能需要了解PeeringDB这个网站&#xff08;https://www.peeringdb.com)&#xff0c; 这里有大部分公开注册的 ASN&#xff08;Autonomous System Number) 以及他们相互直接做Peering的信息&#xff0c;这也是这个网站名字的由来。据统计&#xff…

修复windows脸部识别_如何在Windows 10中改善面部识别

修复windows脸部识别If you have the right hardware, Windows 10 lets you unlock your computer with nothing but a smile. However, Microsoft’s facial recognition isn’t always spot-on. Here’s how to help Windows recognize you better. 如果您拥有合适的硬件&…

使用组策略推送exchange自签名证书

一、导出证书打开证书颁发机构&#xff0c;在证书服务器上面选属性&#xff0c;然后按照下图进行导出操作。 在选择格式时按照上图标识选择。 二、导入证书新建一个组策略&#xff0c;在计算机配置-策略-windows设置-安全设置-公钥策略中选中“受信任的根证书颁发机构”并新建导…

基于.NetCore开发,前端支持Layui、React、Vue且前后端分离的快速开发框架

今天给大家推荐一个基于.Net Core开发的&#xff0c;前端框架支持Layui、React、Vue&#xff0c;并且前端和后端都支持代码一键生成&#xff0c;用于项目开发&#xff0c;可极大的提升开发效率。项目简介这是基于.net core的快速开发框架&#xff0c;前端框架可以根据自己需求选…

什么是Google On.Here,以及如何设置?

Google Wi-Fi is similar to other mesh Wi-Fi systems, but one big feature separates it from the pack: Google On.Here. Google Wi-Fi与其他网状Wi-Fi系统相似&#xff0c;但其中一个重要功能将其与众不同&#xff1a;Google On.Here。 发生什么了&#xff1f; (What Is O…

一张图看懂 SQL 的各种 join 用法

原文链接https://www.codeproject.com/Articles/33052/Visual-Representation-of-SQL-Joins 转载于:https://www.cnblogs.com/xuchao0506/p/10559951.html

1Python全栈之路系列Web框架介绍

Python全栈之路系列之Web框架介绍 所有的语言Web框架本质其实就是起一个socket服务端,监听一个端口,然后运行起来 Web框架包含两部分,一部分是socket,另外一部分是业务的逻辑处理,根据请求的不同做不同的处理 Python的Web框架分成了两类, 即包含socket也包含业务逻辑处理的(tor…

『 再看.NET7』数值类型

在C#中&#xff0c;有int16&#xff0c;用short来定义&#xff1b;有int32&#xff0c;用int定义&#xff1b;用int64&#xff0c;用long来定义。在.NET7中&#xff0c;添加了int128&#xff0c;和unint128&#xff0c;位数更大的整型。var i16 short.MaxValue; Console.Write…

笔记本电脑升级固态硬盘好吗_如何升级笔记本电脑硬盘

笔记本电脑升级固态硬盘好吗Upgrading your laptop’s hard drive is a great way to get some extra life out of an old machine (or resurrect a dead one). Read on as we walk you through the prep work, the installation, and the followup. 升级笔记本电脑的硬盘驱动器…

购物单

小明刚刚找到工作&#xff0c;老板人很好&#xff0c;只是老板夫人很爱购物。老板忙的时候经常让小明帮忙到商场代为购物。小明很厌烦&#xff0c;但又不好推辞。 这不&#xff0c;XX大促销又来了&#xff01;老板夫人开出了长长的购物单&#xff0c;都是有打折优惠的。 …

Seay源代码审计系统

这是一款基于C#语言开发的一款针对PHP代码安全性审计的系统&#xff0c;主要运行于Windows系统上。这款软件能够发现SQL注入、代码执行、命令执行、文件包含、文件上传、绕过转义防护、拒绝服务、XSS跨站、信息泄露、任意URL跳转等漏洞。 下载链接 https://pan.baidu.com/s/1V…

如何在Android Wear上节省电池寿命

If you’re rocking Android on your wrist, there’s a chance you’ve learned to rely on its convenience pretty heavily. And if you’re in that position, then you probably also know how annoying it can be if your watch runs out of juice in the middle of the …

使用 DataAnnotations(数据注解)实现通用模型数据校验

.net 跨平台参数校验的意义在实际项目开发中&#xff0c;无论任何方式、任何规模的开发模式&#xff0c;项目中都离不开对接入数据模型参数的合法性校验&#xff0c;目前普片的开发模式基本是前后端分离&#xff0c;当用户在前端页面中输入一些表单数据时&#xff0c;点击提交按…

网线的做法 及 POE的介绍

网线的做法 以太网线采用差分方式传输。所谓差分方式传输&#xff0c;就是发送端在两条信号线上传输幅值相等相位相反的电信号&#xff0c;接收端对接受的两条线信号作减法运算&#xff0c;这样获得幅值翻倍的信号。其抗干扰的原理是&#xff1a;假如两条信号线都受到了同样&am…

unity 使用tile_如何使用Tile从网上查找电话

unity 使用tileTile is a fantastic little gadget that can help you find your lost keys or wallet. However, it can also locate and ring your phone, even if you never buy a single physical Tile. Here’s how to find your lost phone using the Tile app on the we…