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.pswp.cn/news/279887.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/279887.shtml
英文地址,請注明出處:http://en.pswp.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…

「讀懂源碼系列2」我從 lodash 源碼中學到的幾個知識點

前言 上一篇文章 「前端面試題系列8」數組去重(10 種濃縮版) 的最后&#xff0c;簡單介紹了 lodash 中的數組去重方法 _.uniq&#xff0c;它可以實現我們日常工作中的去重需求&#xff0c;能夠去重 NaN&#xff0c;并保留 {...}。 今天要講的&#xff0c;是我從 _.uniq 的源碼實…

有小伙伴問:上位機用QT還是winform/wpf好?

楔子有小伙伴問&#xff1a;上位機用QT還是winform/wpf好&#xff1f;Qt是C寫的&#xff0c;跨平臺的UI框架&#xff0c;Winform/wpf是C#寫的不跨平臺的Windows上運行的UI框架。這兩個說到底是語言本質的爭論或者區別。優點Qt的優點是可以跨平臺運行UI界面&#xff0c;在Linux&…

使用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;但是模板下內容可變&#…

FirstBird--項目流程

創建項目(英文路徑)—–img圖片文件創建窗體–設置大小(Basic—size–>320*480)—最大化功能禁用(Expert–>setResizable(false))添加面板–設置布局方式(set Layout—>AbsoluteLayout)自己創建面板 GameMain中將Jpanel1改為WinJpanel–創建對應類–>extends JPane…

PeeringDB初探

做網絡相關工作的&#xff0c;可能需要了解PeeringDB這個網站&#xff08;https://www.peeringdb.com)&#xff0c; 這里有大部分公開注冊的 ASN&#xff08;Autonomous System Number) 以及他們相互直接做Peering的信息&#xff0c;這也是這個網站名字的由來。據統計&#xff…

網站排障分析命令

系統連接狀態篇&#xff1a;1.查看TCP連接狀態netstat-nat|awk{print$6}|sort|uniq-c|sort-rnnetstat-n|awk/^tcp/{print$NF}|sort|uniq-c|sort-rnnetstat-ant|awk{print$NF}|grep-v[a-z]|sort|uniq-c2.查找請求數請20個IP&#xff08;常用于查找攻來源&#xff09;&#xff1a…

修復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;前端框架可以根據自己需求選…

PHP常用工具方法集...

PHP常用工具方法集&#xff0c;更新時間 2018-7-14 <?php /*** 常用工具方法集* Author: zj*//** 工具總述 1.加密解密 2.生成隨機字符串 3.獲取文件擴展名&#xff08;后綴&#xff09; 4.文件大小格式化 5.替換標簽字符 6.列出目錄下的文件名 7.獲取當前頁面URL 8.讓瀏覽…

一題多解 面試題

最近在其他論壇上看到幾個網友的面試題&#xff0c;這些天&#xff0c;QQ群內的人都在討論怎么解答才最簡單&#xff0c;下面列出題目&#xff1a; 文件a&#xff1a; 文件b: a b c a b c b c a b c a c b a …

什么是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…

獲取幫助命令

whatis 基于數據庫的查找,查找內容比較慢 優點&#xff1a;查找速度快 缺點&#xff1a;沒有實時性 [rootlocalhost ~]# whatis ls ls (1) - list directory contents ls (1p) - list directory contents 數據庫文件 Centos6:/…