WPF放大镜程序-VisualBrush的使用

WPF (容器控件10)Viewbox控件的详细使用教程 Viewbox 是 WPF 中用于缩放其子元素以适应可用空间的控件。无论 Viewbox 的大小如何变化,它都可以按比例缩放其内容,使内容保持一致的布局和比例。这对于创建具有响应性或可缩放界面的应用程序特别有用。 阅读详情

天看见一篇文章,讲的是用WPF实现的一个放大镜程序,可以用来察看图片。主要用到的是VisualBrush,

这个放大镜是一个Ellipse,大概原理如下:

VisualBrush vb = new VisualBrush();

vb.Visual = 图片;

magnifierEllipse.Fill = vb;

这样设置以后原来的图片就会自动的按比例缩小或放大,来填充magnifierEllipse。

VisualBrush继承自TileBrush,这里讲述TileBrush的两个属性Viewbox和Viewport的使用。

  1. Viewbox定义:public Rect Viewbox {get; set;}

它的类型是Rect,也就是用它来指定截取原图片的哪一个区域用来Fill,这个区域的设置可以用绝对

值和相对值两种方式设置,对应得属性是ViewboxUnits,它有两个值,Absolute表示取绝对坐标,

RelativeToBoundingBox表示取相对坐标。还有一个属性是Stretch,用来指定是否拉伸图片,默认

值是Fill,也就是说如果不够大会拉伸,下图说明了用法:

  1. Viewport定义:public Rect Viewport {get; set;}

通过它可以实现用多个待填充的图片来Fill。它也有绝对和相对两种设置方法,对应的属性是ViewportUnits,

它有两个值,Absolute表示绝对值,RelativeToBoundingBox(是缺省设置方法)表示相对值。

例如下面的例子:

<Rectangle

Width="200" Height="150"

Stroke="LimeGreen" StrokeThickness="1">

<Rectangle.Fill>

<ImageBrush

ImageSource="d:\Picture\Chart_About_3D_Bubble_Charts.png"

Viewbox="0.5,0.25,0.25,0.5"

ViewboxUnits="RelativeToBoundingBox"

Viewport="0,0,0.5,0.5"

ViewportUnits="RelativeToBoundingBox"

TileMode="Tile"

Stretch="Fill"

AlignmentX="Center"

AlignmentY="Center"/>

</Rectangle.Fill>

</Rectangle>

这里的Viewport="0,0,0.5,0.5",所以1/0.5 = 2,每行每列显示两个图片:

 

如果改成Viewport="0,0,0.25,0.5",则1/0.25 = 4,1/0.5 = 4,每行显示4个图片,每列显示2个图片:

  

code:

void Window1_Loaded(object sender, RoutedEventArgs e)
        {
            Canvas can = new Canvas()
            {
                Background = new VisualBrush()
                {
                    Visual = new Line() { X2 = 0, Y2 = 1, Opacity = 0.5, Stroke = Brushes.Gray, StrokeThickness = 1.0 },
                    Stretch = Stretch.None,
                    ViewportUnits = BrushMappingMode.Absolute,
                    TileMode = TileMode.Tile, // repeat if small
                    Viewport = new Rect(0, 0, 1, 20)
                }
            };
            this.grid.Children.Add(can);
        }

这里与上面的例子不同的是使用了绝对的Viewport坐标(BrushMappingMode.Absolute)。Visual是一条很小的line(x1=0,y1=0,x2=0,y2=1),注意这里Viewport,它将整个Canvas分成了若干个宽度为1,高度为20的矩形区域,然后分别用这个很小的line来填充每一个小矩形区域,所以我们会看到下面的效果:

visualbrush1.jpg

会发现,第一根线和window1的标题栏有一定的距离,是因为这个小line是填充到每一个矩形区域的正中间,所以这个距离应该是20/2=10。

转载:http://www.cnblogs.com/bear831204/archive/2008/10/24/1318925.html

WPF控件 ViewBox:调整内容大小的神奇控件 ViewBox是WPF中一个简单但强大的布局容器,它能够根据可用空间自动缩放内容,保持内容的整体比例。在需要创建自适应界面或提供缩放功能的应用程序中,ViewBox是一个不可或缺的工具。通过合理使用ViewBox,你可以显著提升应用程序在不同屏幕尺寸和分辨率下的用户体验,让你的界面设计更加灵活和专业。试着在你的下一个WPF项目中使用ViewBox,你会发现它带来的神奇效果! 阅读详情

相关推荐

WPF 的 VisualBrush 只刷新显示的视觉效果,不刷新布局范围

WPF 的 VisualBrush 可以帮助我们在一个控件中显示另一个控件的外观。这是非常妙的功能。 但是本文需要说其中的一个 Bug —— 如果使用 VisualBrush 显示另一个控件的外观,那么只会在其显示效果有改变的时候刷新,而不会在目标布局改变的时候刷新布局。 本文内容用于复现问题的代码验证问题问题?VisualBrush 的其他 Bug 用于复现问题的代码 我们现在做一个可以用于验...

walterlv - 吕毅 1574

WPF 控件专题 ViewBox 控件详解

WPF 控件专题 ViewBox 控件详解

^@^lemon tea^@^ 7823

浙政钉H5应用上架实战:从环境配置到发布避坑指南

本文详细解析浙政钉H5应用上架全流程,从环境配置到发布避坑指南。重点介绍Vue 2.6 + Node 14.21.3的稳定开发环境搭建、项目结构规范及常见报错解决方案,帮助开发者高效完成浙政钉H5应用上架流程。

weixin_27943395的博客 286

C# WPF控件ViewBox详解

1. Viewbox概述`Viewbox`是WPF中的一个内容控件,它可以自动调整其内部子元素的大小以适应其自身的尺寸。`Viewbox`通过保持子元素原有的宽高比,对内容进行均匀的缩放,使其完全填充控件的空间。2. 工作原理当`Viewbox`的大小发生变化时,它会计算新的缩放比例,并应用到所有子元素上。这个过程是自动的,确保了内容的动态适配。`Viewbox`控件是WPF中一个强大的工具,它提供了灵活的方式来创建自适应的用户界面。

N201871643的博客 3790

windows10系统上安装最新版mysql 8.0详细步骤

windows10系统上安装最新版mysql 8.0详细步骤

glei20的博客 6715

Android无线调试:adb tcpip连接实战指南

本文详细介绍了Android无线调试的完整流程,重点讲解如何使用adb tcpip命令通过Wi-Fi连接设备,摆脱数据线束缚。涵盖环境配置、连接实战、稳定性优化及常见问题排查,帮助开发者高效实现无线adb调试,提升工作效率。

pink的博客 721

WPF 放大镜

WPF 放大镜是以VisualBrush实现的,单击左键放下放大镜,接下来可以对页面的控件进行操作,单击放大镜可以再次获取放大镜

luozuolincool的专栏 2932

FAST-LIO2实战:从零搭建香港大学火星实验室SLAM框架(附官方数据集测试指南)

本文提供了一份详细的FAST-LIO2实战指南,帮助读者从零开始搭建香港大学火星实验室开源的这一高效激光惯性里程计框架。内容涵盖系统环境配置、依赖安装、源码编译、官方数据集测试以及参数调优,旨在让开发者快速上手并应用于机器人SLAM项目。

ppp33的博客 687

WPF 放大镜(visualbrush)+水印字体

效果如下:Visualbrush本质就是将别人的东西拿到自己的视觉树中。

weixin_51223522的博客 767

强化学习实战:如何用PPO算法训练一个超级马里奥AI(附完整代码)

本文提供了一份详细的强化学习实战指南,教你如何使用PPO算法训练一个能玩《超级马里奥》的AI智能体。内容涵盖从环境搭建、自定义奖励函数设计到PPO智能体的PyTorch完整实现,并附有可运行的代码,帮助开发者快速上手游戏AI开发。

h6j7k8l9p0的博客 946

MRI多序列,多中心数据集预处理--使用FSL-Flirt 配准数据

FLIRT(FMRIB 的线性图像配准工具)是用于线性(仿射)模态内和模态间脑图像配准的全自动稳健且准确的工具。 什么是配准 在这两张图片上,很容易看出它们没有对齐,左边相对右边倾斜,虽然我们人类视觉系统还是能把对应的解剖关系连系在一起,但是我们使用计算机分析时确不能够 因此,我们希望相同的解剖结构对齐,用坐标表示的话,希望他们在相同的坐标上。如下图 对齐这些解剖结构的过程就叫做配准(register) 因此,配准的目的也是使相同的解剖结构在同一个位置,便于分析。可以将CT和MRI配准,看同一结构在两个

Tina姐的博客 1万+

WPF之VistualBrush应用(制作放大镜)

我们可以通过WPF的VistualBrush获取画面中某个区域内容来当做某个元素内容的来源。根据这个原理我们就可以做出一些奇特的效果,比如放大镜的制作。                 我先举个简单的利用VistualBrush的例子(文字的镜像效果)。这样更方便了解Vistu

sanjiawan的专栏 5779

C#上位机+国产PLC+AI:构建自主可控的智能生产线解决方案

全栈国产化智能产线方案并非遥不可及,基于成熟的国产硬件、丰富的.NET生态、快速发展的国产大模型,完全可以搭建出稳定可靠且具备智能能力的生产系统。落地建议采用三步走策略:基础国产化阶段:替换PLC与上位机,实现基础监控与控制功能,解决卡脖子问题,快速验证国产化方案稳定性数据沉淀阶段:完善数据采集与存储,建立设备台账、故障库、工艺库,积累高质量领域数据智能升级阶段:引入国产大模型与知识库,落地故障诊断、工艺优化、预测性维护等智能应用,持续提升产线效率。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 519

WPF 如何实现简单放大镜

WPF 如何实现简单放大镜控件名:Magnifier作 者:WPFDevelopersOrg - 驚鏵原文链接[1]:https://github.com/WPFDevelopersOrg/WPFDevelopers框架使用.NET40;Visual Studio 2019;实现此功能需要用到 VisualBrush ,放大镜展现使用 Canvas -> Ellipse .可以使用 ...

dotNET跨平台 710

目标检测YOLO实战应用案例100讲-基于激光雷达点云的三维目标检测算法研究

近几年来,在计算机视觉领域,利用深度学习卷积神经网络技术来实现各种任务的算法越来越多。毫米波雷达、相机、激光雷达、超声波雷达等车载传感器生产成本的降低,汽车的自动驾驶技术得到了飞速发展,在我们的日常生活中经常能看到该技术辅助汽车驾驶员进行行车。和非自动驾驶汽车相比,自动驾驶汽车存在诸多优点,如进一步减少交通事故,保障人身安全;提供安全合理的路线,避免交通拥堵;采用清洁无污染的电能作为汽车新能源,从而降低大气污染等。现如今,自动驾驶技术已经逐渐深入到各个领域并发挥着关键的作用。

qq_36130719的博客 3730

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

wpf放大镜

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Windows;using System.Windows.Controls;using System.Windows.Data;using System.Windows.Documents;using Syst

1153

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

WPF设置VistualBrush的Visual属性制作图片放大镜效果

WPF设置VistualBrush的Visual属性制作图片放大镜效果

qq_44919342的博客 366

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

WPF 自定义放大镜控件

控件名:Magnifier作 者:WPFDevelopersOrg - 驚鏵原文链接[1]:https://github.com/WPFDevelopersOrg/WPFDevelopers框架使用.NET40;Visual Studio 2019;实现此功能需要用到 VisualBrush ,放大镜展现使用 Canvas -> Ellipse .可以使用 VisualBrush 创建放...

dotNET跨平台 246

终极指南:掌握WPF视觉层编程,DrawingVisual和VisualBrush高级应用技巧

WPF视觉层编程是Windows Presentation Foundation中最高效的图形渲染方式,通过DrawingVisual和VisualBrush技术实现轻量级高性能的图形处理。想要构建响应迅速、视觉效果惊艳的WPF应用程序吗?本指南将带你深入探索WPF视觉层编程的核心奥秘!🚀 ## 什么是WPF视觉层编程? WPF视觉层编程是WPF框架中最底层的图形渲染机制,它绕过了标准控件树

gitblog_00637的博客 534

WPF示例-4-动态制作放大镜

最终效果如图:  后台代码如下:    ///     /// Window6.xaml 的交互逻辑    ///     public partial class Window6 : Window    {        Grid myGrid = new Grid();        Grid myGd = new Grid();        Canvas canvasOne

信守承诺,雕刻寂寞 918

WPF:Graphics图画--Brushes画刷--VisualBrush可视画刷

VisualBrush可视画刷 PaintingWithVisualBrush 关键词: VisualBrush.Visual 实现效果: 背景色半透明、包含渐变文本、平铺效果 使用包含文本TextBlock的边框Border作为可视画刷VisualBrush,使用平铺、透明效果填充容器的背景色。 <StackPanel.Backg...

weixin_33847182的博客 720

WPF-动态制作放大镜

最终效果如图: 后台代码如下: /// <summary> /// Window6.xaml 的交互逻辑 /// </summary> public partial class Window6 : Window { Grid myGrid = new Grid(); Grid myGd = new ...

weixin_30509393的博客 208
上一篇: WPF开发方法论要素
下一篇: 从一个实例详解敏捷测试的最佳实践
铁弹火车头
博客等级 码龄14年 1粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值