浅谈WPF的VisualBrush

news/2024/7/5 1:45:30
原文:浅谈WPF的VisualBrush

    首先看看VisualBrush的解释,msdn上面的解释是使用 Visual 绘制区域,那么我们再来看看什么是Visual呢?官方的解释是:获取或设置画笔的内容,Visual 是直接继承自DependencyObject,UIElement也是直接继承自Visual,我们常见的控件都是继承自Visual,Visual可以实现动态绑定,比如我们可以在代码中这样写: <VisualBrush Visual="{Binding TodayPeriod}" Stretch="Fill"></VisualBrush> 这样我们就可以把一个继承自Visual的控件(此处为TodayPeriod的一个UserControl)通过绑定的方式绑定到Visual中,我们再来看看VisualBrush这个类,首先来看一段示例代码:

                         <Border Grid.Column="1"><Border.Background><VisualBrush Stretch="Uniform"><VisualBrush.Visual><Ellipse Fill="#003769" Opacity="0.6" Stretch="Fill" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"                                                Width="100" Height="100"></Ellipse></VisualBrush.Visual></VisualBrush></Border.Background><StackPanel Orientation="Vertical" HorizontalAlignment="Center" VerticalAlignment="Center"><TextBlock FontSize="120" Text="{Binding SuccessError.Total,RelativeSource={RelativeSource TemplatedParent}}" Horizont                                         alAlignment="Center" VerticalAlignment="Center" Margin="0 0 0 -10"></TextBlock><TextBlock FontSize="40" Text="总数" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0 -10 0 0">
</TextBlock></StackPanel></Border>

  这段代码是设置Border的Background为一个Ellipse,然后再在这个Ellipse上面放置两个TextBlock控件,本质上Background属性属于Brush类型,而我们的VisualBrush刚好继承自这个类型,我们来看一看VisualBrush的继承关系:

                                                                               System.Object

                                                                               System.Windows.Threading.DispatcherObject

                                                                               System.Windows.DependencyObject

                                                                               System.Windows.Freezable

 System.Windows.Media.Animation.Animatable

                                                                              System.Windows.Media.Brush

                                                                              System.Windows.Media.TileBrush
                                                                              System.Windows.Media.VisualBrush

所以在上面的代码中我们可以设置Border的Background为VisualBrush,我们在很多地方都是可以使用VisualBrush的,这里需要我们平时在使用的时候不断去反思去总结。

 


http://lihuaxi.xjx100.cn/news/237026.html

相关文章

我不喜欢Go语言的十个理由

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 Go 语言有多火爆&#xff1f;国外如 Google、AWS、Cloudflare、CoreOS 等&#xff0c;国内如七牛、阿里、知乎等都已经开始大规模使用 Go 语言开发…

C++ Reference: Standard C++ Library reference: Containers: list: list: ~list

C官网参考链接&#xff1a;https://cplusplus.com/reference/list/list/~list/ 公有成员函数 <list> std::list::~list ~list(); 列表的析构函数 销毁容器对象。 C98 这将销毁所有容器元素&#xff0c;并使用它的分配器&#xff08;allocator&#xff09;释放list容器分…

TypeScript学习笔记之 接口(Interface)

在java中&#xff0c;接口是用来定义一些规范&#xff0c;使用这些接口&#xff0c;就必须实现接口中的方法&#xff0c;而且接口中的属性必须是常量。javascript中是没有接口的概念的。所以TypeScript在编译成 JavaScript 的时候&#xff0c;所有的接口都会被擦除掉。 而TypeS…

Go语言的前景分析

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 抓住时代的趋势 在上篇文章中&#xff0c;也就是那个跨维度的打击&#xff0c;是可以直接秒杀的中&#xff0c;提到这个时代的问题&#xff0c;这次…

swift 语言评价

杂而不精&#xff0c;一团乱麻&#xff01;模式乱套&#xff0c;不适合作为一门学习和研究语言。 谢谢 LZ 介绍&#xff0c;看完之后更不想用 Swift 了。从 C那里抄个 V-Table 来很先进嘛&#xff1f;别跟 C一样搞什么 STL 就好了&#xff0c;整这么复杂&#xff0c;入个门都需…

Bzoj2780: [Spoj]8093 Sevenk Love Oimaster

题目 传送门 Sol 就是广义\(sam\) 然后记录下每个状态属于哪些串&#xff0c;开\(set\)维护\(parent\)树上启发式合并一下就好了 # include <bits/stdc.h> # define RG register # define IL inline # define Fill(a, b) memset(a, b, sizeof(a)) using namespace std; t…

centos 6.* 修改时间

一、查看Centos的时区和时间 1、使用date命令查看Centos时区 [rootVM_centos ~]# date -R Mon, 26 Mar 2018 19:14:03 0800 2、查看clock系统配置文件 [rootVM_centos ~]# cat /etc/sysconfig/clock ZONE"Asia/Shanghai" 3、查看系统的硬件时间&#xff0c;即BIOS时间…

R语言实现GO分析

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 我们上一期介绍了如何实现GO分析的可视化&#xff0c;运行了GOplot包自带的数据并且很畅通。然而我们如何才能获取那些可以直接输入的数据表格或者…