WPF Geometry几何图形数据图标

摘要:
相信大家在阅读WPF相关GitHub开源项目源码时都会看见一串串这种数据这种Geometry数据就是几何图形数据为什么要用Geometry数据做图标?详细的更改通知:与其他DependencyObject对象不同,Freezable对象在子属性值更改时提供更改通知。

相信大家在阅读WPF相关GitHub开源项目源码时都会看见一串串这种数据
image这种Geometry数据就是几何图形数据

为什么要用Geometry数据做图标?

有一种做法是使用ttf字体文件代替,不过使用ttf字体文件会出现下面几个缺点:
1、团队协作不便于管理
2、需要依赖特定平台
3、无法灵活使用
而使用Geometry的话,我们可以将这些几何图形数据存入资源字典ResourceDictionary
通过反射进行灵活使用,团队开发可共同维护

怎么获取Geometry数据?

我们进入https://www.iconfont.cn/官网,找到心仪的图标,点击F12将鼠标放在该图标区域,找到网页元素
image
Path标签内的d属性即Geometry数据

如何使用Geometry数据

创建资源字典,并加入命名空间
image
将Geometry数据存入< Geometry x:Key="t_chart" o:Freeze="true" >< /Geometry >标签内
t_chart即资源名称key
可能会有小伙伴注意到了o:Freeze这个属性,下面是MSDN上的原文

A class that derives from Freezable gains the following features:
Special states: a read-only (frozen) state and a writable state.
Thread safety: a frozen Freezable object can be shared across threads.
Detailed change notification: Unlike other DependencyObject objects, a Freezable object provides change notifications when sub-property values change.
Easy cloning: the Freezable class has already implemented several methods that produce deep clones.
翻译后:
从Freezable派生的类具有以下功能:
特殊状态:只读(冻结)状态和可写状态。
线程安全:冻结的Freezable对象可以在线程之间共享。
详细的更改通知:与其他DependencyObject对象不同,Freezable对象在子属性值更改时提供更改通知。
易于克隆:Freezable类已经实现了几种产生深层克隆的方法。

随后在App.xaml中加入

<ResourceDictionary Source="Resources/Themes/Geometries.xaml" />

这样我们就可以在全局的XAML代码中通过{StaticResource t_chart}使用Geometry数据

那么肯定会有小伙伴问了,如果想使用MVVM前后台分离开发怎么办?(在C#代码中动态使用Geometry)
下面是C#调用Geometry资源的示例
将资源文件存入静态类中

namespace Demo.Resources.Themes
{
    public static class LocalTheme
    {
        public static ResourceDictionary Dic = new ResourceDictionary { Source = new Uri(@"Resources/Themes/Geometries.xaml", UriKind.Relative) };
    }
}

使用资源字典(Geometry)LocalTheme.Dic["t_chart"],t_chart即资源字典中的key值

var chart = new HandyControl.Controls.TabItem()
{
	Header="图表",
	Content = xamlModel
};
chart.SetValue(IconElement.GeometryProperty, (Geometry)LocalTheme.Dic["t_chart"]);

SetValue即设置附加属性
public void SetValue(DependencyProperty dp, object value);
中的value为Geometry

免责声明:文章转载自《WPF Geometry几何图形数据图标》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Unity3D 物体移动方法总结OpenNESS,开源的边缘网络服务平台下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

WPF实现渐变淡入淡出的动画效果

1、实现原理 1.1 利用UIElement.OpacityMask属性,用于改变对象区域的不透明度的画笔。可以使元素的特定区域透明或部分透明,从而实现比较新颖的效果。 1.2 OpacityMask属性接受任何画刷,可利用LinearGradientBrush线性渐变画刷,通过对渐变画刷中各颜色点加以动画处理即可。 2、渐变淡入实现 渐变淡入效果,可通过...

WPF控件

什么是控件 WPF中是数据驱动UI,数据是核心、是主动的;UI从属与数据并表达数据、是被动的。UI的功能是让用户观察和操作数据,为了让用户观察数据,我们需要用UI元素来显示数据;为了让用户操作数据,我们需要用UI元素响应用户的操作。WPF中把那些能够显示数据、响应用户操作的UI元素称为控件。 控件所显示的数据,我们称之为“数据内容”,控件在响应用户的操作后...

WPF中内嵌网页的两种方式

在wpf程序中,有时会内嵌网页。内嵌网页有两种方法,一种是使用wpf自带WebBrowser控件来调用IE内核,另一种是使用CefSharp包来调用chrom内核。 一、第一种使用自带WebBrowser: 1、直接在界面XAML文件中添加如下代码 1 <Grid> 2 <Grid.RowDefinitions> 3...

Wpf杀死所有线程、Wpf关闭程序杀死所有线程

Wpf关闭程序杀死所有线程: Process.GetCurrentProcess().Kill(); using System.Diagnostics; private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e) { Process.Get...

WPF概述

Windows Presentation Foundation (简称WPF),是一个可创建适用于Windows的桌面客户端应用程序的UI框架。WPF框架支持广泛的应用程序开发功能,包括应用程序模型、空间、图形和数据绑定。WPF使用Extension Application Markup Language(XAML)为应用程序编程提供声明性模型。 WPF有...

小目标 | DAX高级实践-Power BI与Excel联合应用

· 适用人群:数据分析专业人士,在数据分析方向需求发展人士 · 应用场景:数据汇报、数据可视化展现、数据建模分析 · 掌握难度:★★★★☆  本期讲师 DAX高级实践-Power BI与Excel联合应用   通过前序三篇文章的学习,大家已经了解到在DAX数据建模中如何搭建数据模型、如何设计数据模型中对于值的度量计算以及如何查询数据模型。   而在实际...