WPF 模仿IconPacks库写图标按钮
先上原链接,一个很不错的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库写图标按钮相关推荐
- WPF常用UI库和图标库(MahApps、HandyControl、LiveCharts)
WPF常用UI库和图表库(MahApps.HandyControl.LiveCharts) WPF有很多开源免费的UI库,本文主要介绍常见的MahApps.HandyControl两个UI库:在开发过 ...
- WPF控件库:图片按钮的封装
需求:很多时候界面上的按钮都需要被贴上图片,一般来说: 1.按钮处于正常状态,按钮具有背景图A 2.鼠标移至按钮上方状态,按钮具有背景图B 3.鼠标点击按钮状态,按钮具有背景图C 4.按钮处于不可用状 ...
- 个人代码库の迅雷7动态图标按钮模拟
引言: 迅雷7 发布以来,就对它的"动态图标按钮"特效垂涎很久了,现在终于有机会和心情来模拟这个效果. 我坚信在编程的世界,没有做不到,只有想不到! 特效一览: 鼠标只要移动到上面 ...
- wpf加载上千张图片部分图片不显示_开源WPF控件库MaterialDesignInXAML推荐
(给DotNet加星标,提升.Net技能) 转自:沙漠之狐耶dotnet9.com/?p=2180 前言 介绍一个开源的C# WPF开源控件库,非常漂亮,重点是开源哦 WPF做桌面开发是很有优势的,除 ...
- 开源WPF控件库MaterialDesignInXAML推荐
今天介绍一个开源的C# WPF开源控件库,非常漂亮,重点是开源哦 WPF做桌面开发是很有优势的,除了微软自带的控件外,还有很多第三方的控件库,比如收费的Dev Express For WPF.Tele ...
- Panuon.UI.Silver – 开源C# WPF控件库
Panuon.UI.Silver – 开源C# WPF控件库 Dotnet9 • 2019年12月13日 22:55 • WPF • 阅读 12145 时间如流水,只能流去不流回! 点赞再看,养成习惯 ...
- 《Dotnet9》系列-开源C# WPF控件库2《Panuon.UI.Silver》强力推荐
国内优秀的WPF开源控件库,Panuon.UI的优化版本.一个漂亮的.使用样式与附加属性的WPF UI控件库,值得向大家推荐使用与学习. 今天站长(Dotnet9,站长网址:https://dotne ...
- WPF 控件库——仿制Windows10的进度条
WPF 控件库--仿制Windows10的进度条 原文:WPF 控件库--仿制Windows10的进度条 一.其实有现成的 先来看看Windows10进度条的两种模式: 网上有不少介绍仿制Window ...
- (四)开源C# WPF控件库《AduSkin – UI》
微信公众号:[Dotnet9的博客],网站:[Dotnet9],问题或建议:[请网站留言], 如果对您有所帮助:[欢迎赞赏]. https://dotnet9.com 追求极致,永臻完美 A Beau ...
最新文章
- 临时对象与NRV技术
- 实现一个EventTarget类
- Linux系统编程——基于文件描述符的文件操作(1)
- 00075_BigInteger
- JavaSE(二十五)——String与StringBuffer、StringBuilder的区别、创建对象的几种方法、Http和Https的区别
- SAP Spartacus批量读取产品的逻辑
- 基于 MaxCompute + Hologres 的人群圈选和数据服务实践
- 5G来了 多款4G手机开始降价销售
- 天工软件在正射项目中的应用与常见问题解答
- 【TSP】基于matlab免疫算法求解31城市旅行商问题【含Matlab源码 1149期】
- 最新最全linux系统调优指南(centos7.X)
- (专升本)Excel(自动填充数据)
- 大学计算机课程实验指导书,《大学计算机基础》课程实验指导书.doc
- 做好大型项目的五个关键
- C#/音乐播放器/带进度条/歌词滚动、颜色变化/桌面应用程序设计
- Machine Learning - A/B Test
- 黑马程序员Java零基础视频教程(2022最新Java)B站视频学习笔记-Day15-阶段项目(拼图小游戏)(上篇)
- java 实现图片截取功能
- 无人机姿态表示方法及相互转换(欧拉角、方向余弦矩阵、四元数)
- [2021-09-12]我所知道的最新CSGO国服能取回皮肤的国内开箱网站大全