基于WPF實(shí)現(xiàn)簡單放大鏡效果
WPF 如何實(shí)現(xiàn)簡單放大鏡
框架使用.NET40
;
Visual Studio 2019
;
實(shí)現(xiàn)此功能需要用到 VisualBrush
,放大鏡展現(xiàn)使用 Canvas
-> Ellipse
.
- 可以使用
VisualBrush
創(chuàng)建放大效果。 - 設(shè)置
Visual
獲取或設(shè)置畫筆的內(nèi)容。 - 設(shè)置
ViewboxUnits
Absolute
坐標(biāo)系與邊界框無關(guān)。 - 設(shè)置
Viewbox
獲取或設(shè)置TileBrush
圖塊中內(nèi)容的位置和尺寸。 - 當(dāng)鼠標(biāo)移動獲取當(dāng)前坐標(biāo)點(diǎn)修改
VisualBrush
的Viewbox
。 - 鼠標(biāo)移動修改
Ellipse
的Canvas.Left
與Canvas.Top
跟隨鼠標(biāo)。
實(shí)現(xiàn)代碼
1) 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; ????????}
效果圖
到此這篇關(guān)于基于WPF實(shí)現(xiàn)簡單放大鏡效果的文章就介紹到這了,更多相關(guān)WPF放大鏡內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
淺談C#中ToString()和Convert.ToString()的區(qū)別
本文介紹了ToString()和Convert.ToString()的使用方法,他們之間的區(qū)別,以及從object到string的轉(zhuǎn)換方法,希望對學(xué)習(xí)C#編程的你有所幫助2016-11-11C#滑動驗(yàn)證碼拼圖驗(yàn)證功能實(shí)現(xiàn)(SlideCaptcha)
目前網(wǎng)站上的驗(yàn)證碼機(jī)制可謂是五花八門,有簡單的數(shù)字驗(yàn)證,有摻雜了字母和文字的混淆驗(yàn)證,還有通過滑塊進(jìn)行的拼圖驗(yàn)證,下面這篇文章主要給大家介紹了關(guān)于C#滑動驗(yàn)證碼拼圖驗(yàn)證功能的實(shí)現(xiàn)方法,需要的朋友可以參考下2022-04-04Unity實(shí)現(xiàn)鼠標(biāo)點(diǎn)2D轉(zhuǎn)3D進(jìn)行旋轉(zhuǎn)
這篇文章主要為大家詳細(xì)介紹了Unity實(shí)現(xiàn)鼠標(biāo)點(diǎn)2D轉(zhuǎn)3D進(jìn)行旋轉(zhuǎn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-04-04C#使用控制臺列出當(dāng)前所有可用的打印機(jī)列表
這篇文章主要介紹了C#使用控制臺列出當(dāng)前所有可用的打印機(jī)列表,涉及C#操作計算機(jī)硬件的相關(guān)使用技巧,非常具有實(shí)用價值,需要的朋友可以參考下2015-04-04