先上原链接,一个很不错的wpf图标库 :

https://github.com/MahApps/MahApps.Metro.IconPacks

提供了大量的图标可以用,如下图:(部分截图)

简单分析了一下代码,

并模仿它写一个图标类和简单的使用示例:

App.xaml:

<Application x:Class="IconPackMini.App"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:local="clr-namespace:IconPackMini"StartupUri="MainWindow.xaml"><Application.Resources><Style TargetType="local:IconButton"><Setter Property="FontFamily" Value="微软雅黑"/><Setter Property="FontSize" Value="14"/><Setter Property="Foreground" Value="Black"/><Setter Property="BorderThickness" Value="0"/><Setter Property="Margin" Value="0"/><Setter Property="Padding" Value="0"/><Setter Property="FocusVisualStyle" Value="{x:Null}"/><Setter Property="SnapsToDevicePixels" Value="True"/><Setter Property="UseLayoutRounding" Value="True"/><Setter Property="Background" Value="Transparent"/><Setter Property="SnapsToDevicePixels" Value="True"/><Setter Property="Padding" Value="5"/><Setter Property="Cursor" Value="Hand"/><Setter Property="Width" Value="32"/><Setter Property="Height" Value="{Binding ActualWidth,RelativeSource={RelativeSource Self}}"/><Setter Property="Template"><Setter.Value><ControlTemplate TargetType="local:IconButton"><Border x:Name="_border" CornerRadius="{TemplateBinding CornerRadius}"ClipToBounds="True"BorderThickness="{TemplateBinding BorderThickness}"BorderBrush="{TemplateBinding BorderBrush}"Background="{TemplateBinding Background}"><Viewbox Margin="{TemplateBinding Padding}"Stretch="Uniform"><Path x:Name="_path"Width="{TemplateBinding PathWidth}"Height="{TemplateBinding PathHeight}"Fill="{TemplateBinding Foreground}" Data="{TemplateBinding Geometry}"/></Viewbox></Border><ControlTemplate.Triggers><Trigger Property="IsMouseOver" Value="True" SourceName="_border"><Setter Property="Background" Value="{Binding HoverBackground,RelativeSource={RelativeSource AncestorType=local:IconButton}}" TargetName="_border"/><Setter Property="Fill" Value="{Binding HoverForeground,RelativeSource={RelativeSource AncestorType=local:IconButton}}" TargetName="_path"/></Trigger></ControlTemplate.Triggers></ControlTemplate></Setter.Value></Setter>
</Style></Application.Resources>
</Application>

iconKey 枚举类:

namespace IconPackMini
{public enum IconKey{None,/// <summary>/// 关闭按钮/// </summary>Close,/// <summary>/// 最小化按钮/// </summary>MinSize,/// <summary>/// 普通最大化按钮/// </summary>MaxSize,/// <summary>/// 全屏后最大化按钮/// </summary>MaxToNormal,/// <summary>/// 设置按钮/// </summary>Setting,/// <summary>/// 五角星/// </summary>Star,}
}

还有大部分控件类代码,都放在仓库内,自取。

扩展也很简单,使用时,取得path后,添加新图标到IconKey 和IconKeyDic内就可以了,对于不想引用类库又想用的人,还行。

效果图:

【原创】转载请注明出处。

【加群】要加入 WPF UI 微信群的,可以添加我的微信。

【资源】代码仓库地址:https://gitee.com/gxygitee/pub.git

WPF 模仿IconPacks库写图标按钮相关推荐

  1. WPF常用UI库和图标库(MahApps、HandyControl、LiveCharts)

    WPF常用UI库和图表库(MahApps.HandyControl.LiveCharts) WPF有很多开源免费的UI库,本文主要介绍常见的MahApps.HandyControl两个UI库:在开发过 ...

  2. WPF控件库:图片按钮的封装

    需求:很多时候界面上的按钮都需要被贴上图片,一般来说: 1.按钮处于正常状态,按钮具有背景图A 2.鼠标移至按钮上方状态,按钮具有背景图B 3.鼠标点击按钮状态,按钮具有背景图C 4.按钮处于不可用状 ...

  3. 个人代码库の迅雷7动态图标按钮模拟

    引言: 迅雷7 发布以来,就对它的"动态图标按钮"特效垂涎很久了,现在终于有机会和心情来模拟这个效果. 我坚信在编程的世界,没有做不到,只有想不到! 特效一览: 鼠标只要移动到上面 ...

  4. wpf加载上千张图片部分图片不显示_开源WPF控件库MaterialDesignInXAML推荐

    (给DotNet加星标,提升.Net技能) 转自:沙漠之狐耶dotnet9.com/?p=2180 前言 介绍一个开源的C# WPF开源控件库,非常漂亮,重点是开源哦 WPF做桌面开发是很有优势的,除 ...

  5. 开源WPF控件库MaterialDesignInXAML推荐

    今天介绍一个开源的C# WPF开源控件库,非常漂亮,重点是开源哦 WPF做桌面开发是很有优势的,除了微软自带的控件外,还有很多第三方的控件库,比如收费的Dev Express For WPF.Tele ...

  6. Panuon.UI.Silver – 开源C# WPF控件库

    Panuon.UI.Silver – 开源C# WPF控件库 Dotnet9 • 2019年12月13日 22:55 • WPF • 阅读 12145 时间如流水,只能流去不流回! 点赞再看,养成习惯 ...

  7. 《Dotnet9》系列-开源C# WPF控件库2《Panuon.UI.Silver》强力推荐

    国内优秀的WPF开源控件库,Panuon.UI的优化版本.一个漂亮的.使用样式与附加属性的WPF UI控件库,值得向大家推荐使用与学习. 今天站长(Dotnet9,站长网址:https://dotne ...

  8. WPF 控件库——仿制Windows10的进度条

    WPF 控件库--仿制Windows10的进度条 原文:WPF 控件库--仿制Windows10的进度条 一.其实有现成的 先来看看Windows10进度条的两种模式: 网上有不少介绍仿制Window ...

  9. (四)开源C# WPF控件库《AduSkin – UI》

    微信公众号:[Dotnet9的博客],网站:[Dotnet9],问题或建议:[请网站留言], 如果对您有所帮助:[欢迎赞赏]. https://dotnet9.com 追求极致,永臻完美 A Beau ...

最新文章

  1. 临时对象与NRV技术
  2. 实现一个EventTarget类
  3. Linux系统编程——基于文件描述符的文件操作(1)
  4. 00075_BigInteger
  5. JavaSE(二十五)——String与StringBuffer、StringBuilder的区别、创建对象的几种方法、Http和Https的区别
  6. SAP Spartacus批量读取产品的逻辑
  7. 基于 MaxCompute + Hologres 的人群圈选和数据服务实践
  8. 5G来了 多款4G手机开始降价销售
  9. 天工软件在正射项目中的应用与常见问题解答
  10. 【TSP】基于matlab免疫算法求解31城市旅行商问题【含Matlab源码 1149期】
  11. 最新最全linux系统调优指南(centos7.X)
  12. (专升本)Excel(自动填充数据)
  13. 大学计算机课程实验指导书,《大学计算机基础》课程实验指导书.doc
  14. 做好大型项目的五个关键
  15. C#/音乐播放器/带进度条/歌词滚动、颜色变化/桌面应用程序设计
  16. Machine Learning - A/B Test
  17. 黑马程序员Java零基础视频教程(2022最新Java)B站视频学习笔记-Day15-阶段项目(拼图小游戏)(上篇)
  18. java 实现图片截取功能
  19. 无人机姿态表示方法及相互转换(欧拉角、方向余弦矩阵、四元数)
  20. [2021-09-12]我所知道的最新CSGO国服能取回皮肤的国内开箱网站大全

热门文章

  1. Codeforces 173E Camping Groups 线段树
  2. python数据类型之元组类型
  3. 论接单报价管理与ERP信息化管理的重要性
  4. Linux内核笔记--内存管理之用户态进程内存分配
  5. win7 部署tomcat
  6. Html常用标签元素
  7. 10进制转化为16进制以内的转化
  8. 软件工程之个人项目--词频统计
  9. xxx定律-poj-3782
  10. Hdu 3478 Catch