惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Attack and Defense Labs
Attack and Defense Labs
The GitHub Blog
The GitHub Blog
C
Check Point Blog
博客园_首页
MongoDB | Blog
MongoDB | Blog
N
Netflix TechBlog - Medium
F
Full Disclosure
Microsoft Security Blog
Microsoft Security Blog
爱范儿
爱范儿
Recent Announcements
Recent Announcements
阮一峰的网络日志
阮一峰的网络日志
G
GRAHAM CLULEY
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
T
Threat Research - Cisco Blogs
C
Cybersecurity and Infrastructure Security Agency CISA
V
Vulnerabilities – Threatpost
K
Kaspersky official blog
博客园 - 司徒正美
S
Schneier on Security
T
The Exploit Database - CXSecurity.com
Project Zero
Project Zero
云风的 BLOG
云风的 BLOG
Cisco Talos Blog
Cisco Talos Blog
Know Your Adversary
Know Your Adversary
雷峰网
雷峰网
V
V2EX - 技术
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Spread Privacy
Spread Privacy
罗磊的独立博客
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
S
Security Affairs
SecWiki News
SecWiki News
Schneier on Security
Schneier on Security
O
OpenAI News
Jina AI
Jina AI
PCI Perspectives
PCI Perspectives
Cyberwarzone
Cyberwarzone
Y
Y Combinator Blog
Apple Machine Learning Research
Apple Machine Learning Research
B
Blog RSS Feed
I
InfoQ
D
Docker
P
Palo Alto Networks Blog
Recorded Future
Recorded Future
M
MIT News - Artificial intelligence
博客园 - Franky
B
Blog
Scott Helme
Scott Helme
博客园 - 叶小钗
D
DataBreaches.Net

博客园 - 离线

Arduino语法详解_含示例详解 用C#实现的几种常用数据校验方法整理(CRC校验;LRC校验;BCC校验;累加和校验) C#设计模式 ---- 总结汇总(转载) 压缩包Zip格式详析(全网最详细) MQTT介绍 mDNS知识 转(zip文件格式说明) 学习笔记 彻底明白Zigbee术语——群集(Cluster)、端点(EndPoint)等 C# 使用OLEDB 读不出 Excel 参数配置说明 Excel 12.0; HDR=Yes; IMEX=1;READONLY=1 ESA SNAP中超分模块处理Sentinel-2数据效果图 Windows 下安装 RabbitMQ服务异常 安装RabbitMQ时出现Plugin configuration unchanged,RabbitMQ服务启动几秒后自动关闭, http://127.0.0.1:15672/页面无法访问一并解答 windows10环境下的RabbitMQ安装步骤(图文) .NET Core 微服务架构学习与实践系列文章目录 - 离线 .Net 微服务架构技术栈的那些事 - 离线 Newtonsoft.Json高级用法 - 离线 WPF:选择器(selector) MVVM处理TreeView的SelectedItem的绑定的两种方式 - 离线
转载:IconFont(矢量图标字体)在Winform中的应用
离线 · 2023-04-12 · via 博客园 - 离线

一、前言

很多时候,使用矢量图形可以带来非常美观的界面效果,比如SVG的使用。但是Winform原生是不支持显示SVG图像的,所以退而求其次,可以使用IconFont来实现相似的矢量效果。

先来个图解解馋:

知识点:资源文件中字体的使用方法、IconFont使用方法、IconFont应用场景示例、IconFont显示效果优化、IconFont使用经验等。

相信看完的你,一定会有所收获!

本文地址:https://www.cnblogs.com/lesliexin/p/14651505.html


二,IconFont

(一),IconFont选择

网上IconFont资源很多,同时很多提供SVG下载的网站都会提供对应的IconFont文件。

本文所用的是比较流行且开源免费的FontAwesome v4.7。官网:http://www.fontawesome.com.cn

(二),IconFont使用方式

在Winform中,是使用图标字体的Unicode码进行显示的。

FontAwesome官网中,有所有图标的Unicode,我们使用的就是如图中的Unicode编码。

在Winform中使用时,只需要将图中的转义符号替换成“\u”即可,如图所示:


三,重点

(一),嵌入资源中字体文件的使用

使用方法:PrivateFontCollection.AddMemoryFont( IntPtr memory, int length)

MSDN解释:

(二),IconFont使用方法

1,方法一

支持添加文本显示的控件,则直接使用即可,需要注意的是将控件的属性“UseCompatibleTextRendering”设置为“true”。

2,方法二

使用GDI+的方法“Graphics.DrawString()”去绘制。


四、具体实现

(注:文末有源代码工程下载)

(一),界面说明

包含1个ComboBox,4个Label,2个RadioButton。

(二),核心属性相关

1,设置Label控件的属性“UseCompatibleTextRendering”为“true”,以支持IconFont显示。

MSDN解释:

2,设置ComboBox的属性“DrawMode”为“OwerDrawFiexd”,以支持下拉列表项的重绘。

(三),核心事件相关

1,ComboBox 列表项重绘事件——DrawItem

作用:对列表项进行重绘,支持颜色等。

2,Label点击事件——Click

作用:点击后改变文本

(四),核心方法相关

1,加载资源文件中IconFont文件

2,初始化下拉列表

3,IconFont显示

五、问题及解决经验

1,IconFont中非图标字体问题

在使用了IconFont后,因为IconFont中只包含图标,所以正常文字的字体就会以默认字体来显示,如宋体。

解决经验:

2,IconFont中图标存在锯齿现象

在正常使用时,如果直接使用控件的Text属性给控件设置图标,就会出现锯齿现象。

解决经验:

使用GDI+的方式去绘制字体,因为可以设置“SmoothingMode(平滑模式)”为“AntiAlias(反锯齿)”,以达到没有锯齿平滑显示的效果。

效果:


五、总结

每种技术都有自己的适用场景,在某些场景下使用IconFont可以很方便的实现一些显示效果。

IconFont的应用场景有很多,我这里是抛砖引玉,提供一种应用思路而已。

欢迎大家评论指正。

源工程下载:https://files.cnblogs.com/files/lesliexin/DemoIconFont.7z

-【END]-

原文地址:https://www.cnblogs.com/lesliexin/p/14651505.html