扩展按钮图标

简介: 扩展按钮图标

HandyControl 默认的按钮图标肯定是不够我们使用的,其默认图标文档如下:

https://handyorg.github.io/handycontrol/basic_xaml/geometries/


目前默认带有的图标如下:

HandyControl默认几何形状.png


扩展原理

一般的按钮图标都普遍采用两种方式: iconfontsvg


相比之下, iconfont 使用起来容易,但是有一定的弊端,例如:项目不好维护等等, AduSkin 就是采用了这种方式。


svg 的优点在于它是矢量图,不会失真,同时也更容易进行维护,因为都是一个一个的独立文件嘛。 HandyControl 就是采用了 SVG 的方式来实现的图标。


所以, HandyControl 的扩展原理就是扩展项目中的 svg 库。


扩展方式

Step1. 首先建立资源字典

WPF 中, SVG 叫做几何形状Geometry ),我们新建一个存储 SVG资源字典,起名为 Geometries.xaml ,路径为: Resources/Themes/Basic/Geometries.xaml ,并将其引入到 App.xaml 文件中


提示

引入到 App.xaml 文件中需要按照自己的项目风格哦!


Step2. 往资源字典中添加几何图形资源

iconfont网站上下载需要的SVG图标,比如我们找一个登录图标,如下所示:

iconfont登录图标.png


选择复制svg代码,这样剪切板上就会复制到如下内容:

<svg t="1629125142627" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2764" width="200" height="200"><path d="M614.015 562.226H409.928c-191.021 0-346.487 153.046-346.487 341.29v20.07C63.441 1024 216.36 1024 409.928 1024h204.087c185.927 0 346.46 0 346.5-100.413v-20.121c0-188.156-155.48-341.291-346.5-341.291zM501.77 0C350.075 0 226.7 121.566 226.7 271.02s123.323 271.047 275.07 271.047S776.84 420.475 776.84 271.02 653.454 0 501.771 0z" p-id="2765"></path></svg>点击复制复制失败已复制


接下来在 Geometries.xaml 文件中建立Login相关的几何图形资源,如下所示:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                     xmlns:o="http://schemas.microsoft.com/winfx/2006/xaml/presentation/options">
    <Geometry o:Freeze="True" x:Key="LoginGeometry">M614.015 562.226H409.928c-191.021 0-346.487 153.046-346.487 341.29v20.07C63.441 1024 216.36 1024 409.928 1024h204.087c185.927 0 346.46 0 346.5-100.413v-20.121c0-188.156-155.48-341.291-346.5-341.291zM501.77 0C350.075 0 226.7 121.566 226.7 271.02s123.323 271.047 275.07 271.047S776.84 420.475 776.84 271.02 653.454 0 501.771 0z</Geometry>
</ResourceDictionary>点击复制复制失败已复制


提示

做法就是建立一个 Geometry 元素,其中 x: Key 属性为自定义的名称,元素内容就是 SVG 中的 path.d 的值!


Step3. 页面引入

在页面中按照如下方式引入即可:

<Button Style="{StaticResource ButtonPrimary}" Content="登录" hc:IconElement.Geometry="{StaticResource LoginGeometry}"/>点击复制复制失败已复制


效果:

HandyControl自定义按钮图标效果.png

目录
相关文章
|
7月前
|
安全 编译器 程序员
C++对C的扩展(下)
C++对C的扩展
60 0
|
7月前
|
设计模式 uml C++
C++中的装饰器模式:灵活地扩展功能
C++中的装饰器模式:灵活地扩展功能
106 0
|
7月前
|
编译器 芯片
字扩展与位扩展
字扩展与位扩展
133 0
|
3月前
|
JavaScript
扩展|2-10
扩展|2-10
|
安全 编译器 C语言
c++学习之c++对c的扩展1
c++学习之c++对c的扩展1
115 0
|
7月前
|
安全 程序员 编译器
C++对C的扩展(上)
C++对C的扩展
64 0
|
编译器 C语言 C++
c++学习之c++对c的扩展2
c++学习之c++对c的扩展2
81 0
|
C语言 C++ 容器
|
前端开发 Java Nacos
应用于分布式系统-自定义扩展 dataid | 学习笔记
快速学习应用于分布式系统-自定义扩展 dataid。
125 0