当前位置: 首页> 教育> 幼教 > 南昌地宝网二手车_开个广告公司大概需要多少钱_小企业广告投放平台_百度推广最近怎么了

南昌地宝网二手车_开个广告公司大概需要多少钱_小企业广告投放平台_百度推广最近怎么了

时间:2025/7/13 7:37:34来源:https://blog.csdn.net/chinahuyong/article/details/144339719 浏览次数:0次
南昌地宝网二手车_开个广告公司大概需要多少钱_小企业广告投放平台_百度推广最近怎么了

1、介绍

字体图标在Web应用中最为常见,字体图标是矢量的,矢量图意味着每个图标都能在所有大小的屏幕上完美呈现,可以随时更改大小和颜色,而且不失真。字体图标常见的有Font Awesome和Elegant Icon Font,她们不仅图标数量多,还可以免费使用。这些图标如果能用在WinForm项目中,不仅可以带来更加直观的界面效果,也能让图标不再局限于类似png类型,本文将介绍在WinForm项目中如何使用字体图标。

2、字体图标的选择

网上IconFont资源很多,同时很多提供SVG下载的网站都会提供对应的IconFont文件。本文就以:比较流行且开源免费的FontAwesome字体图标为例,讲解.NET开发的WinForm项目如何使用。

FontAwesome,官网:https://fontawesome.com.cn/v4/icons

FontAwesome

在上图中,我们可以看到每个图标都有对应的Unicode编码,我们需要使用这个编码来做图标的展示。

3、使用方法

下载字体图标到本地,放到项目相应的位置,如在我们的项目中使用了两类字体图标,FontAwesome和ElegantIcon,如下图所示。

字体图标

图标

在项目中定义字体编码对应的枚举部分代码如下所示。

/// <summary>
/// 图标枚举,包含Awesome图标和Elegant图标,分别以A和E开头
/// </summary>
public enum FontIcons 
{#region Awesome    English:Awesome/// <summary>/// a fa 500PX/// </summary>A_fa_500px = 0xf26e,/// <summary>/// a fa address book/// </summary>A_fa_address_book = 0xf2b9,/// <summary>/// a fa address book o/// </summary>A_fa_address_book_o = 0xf2ba,/// <summary>/// a fa address card/// </summary>A_fa_address_card = 0xf2bb,#endregion#region Elegant    English:Elegant/// <summary>/// The e arrow up/// </summary>E_arrow_up = 0x21,/// <summary>/// The e arrow down/// </summary>E_arrow_down = 0x22,/// <summary>/// The e arrow left/// </summary>E_arrow_left = 0x23,#endregion
}

定义字体图标加载公共类:FontImagesHelper.cs,此类不仅支持对待加载图标指定尺寸大小、还可以设置前景色和背景色。

FontImagesHelper

FontImagesHelper.cs源码如下:

/// <summary>
/// 字体图标图片,awesome字体默认加载,elegant字体在使用时延迟加载
/// </summary>
public static class FontImagesHelper
{/// <summary>/// The m font collection/// </summary>private static readonly PrivateFontCollection fontCollection = new PrivateFontCollection();/// <summary>/// The m fonts awesome/// </summary>private static readonly Dictionary<string, Font> fontsAwesome = new Dictionary<string, Font>();/// <summary>/// The m fonts elegant/// </summary>private static readonly Dictionary<string, Font> fontsElegant = new Dictionary<string, Font>();/// <summary>/// The m cache maximum size/// </summary>private static Dictionary<int, float> cacheMaxSize = new Dictionary<int, float>();/// <summary>/// The minimum font size/// </summary>private const int MinFontSize = 8;/// <summary>/// The maximum font size/// </summary>private const int MaxFontSize = 43;/// <summary>/// 构造函数/// </summary>/// <exception cref="FileNotFoundException">Font file not found</exception>static FontImagesHelper(){string strFile = Path.Combine(SystemInfo.StartupPath, "Resource", "IconFont\\FontAwesome.ttf");fontCollection.AddFontFile(strFile);float size = MinFontSize;for (int i = 0; i <= (MaxFontSize - MinFontSize) * 2; i++){fontsAwesome.Add(size.ToString("F2"), new Font(fontCollection.Families[0], size, FontStyle.Regular, GraphicsUnit.Point));size += 0.5f;}}/// <summary>/// 获取图标/// </summary>/// <param name="iconName">图标名称</param>/// <param name="imageSize">图标大小</param>/// <param name="foreColor">前景色</param>/// <param name="backColor">背景色</param>/// <returns>图标</returns>public static Icon GetIcon(string iconName, int imageSize = 32, Color? foreColor = null, Color? backColor = null){FontIcons icon = (FontIcons)Enum.Parse(typeof(FontIcons), iconName);return GetIcon(icon, imageSize, foreColor, backColor);}/// <summary>/// 获取图标/// </summary>/// <param name="iconName">图标名称</param>/// <param name="imageSize">图标大小</param>/// <param name="foreColor">前景色</param>/// <param name="backColor">背景色</param>/// <returns>图标</returns>public static Icon GetIcon(FontIcons iconName, int imageSize = 32, Color? foreColor = null, Color? backColor = null){try{Bitmap image = GetImage(iconName, imageSize, foreColor, backColor);return image != null ? ToIcon(image, imageSize) : null;}catch{return null;}}/// <summary>/// 获取图标/// </summary>/// <param name="iconName">图标名称</param>/// <param name="imageSize">图标大小</param>/// <param name="foreColor">前景色</param>/// <param name="backColor">背景色</param>/// <returns>图标</returns>public static Bitmap GetImage(string iconName, int imageSize = 32, Color? foreColor = null, Color? backColor = null){try{FontIcons icon = (FontIcons)Enum.Parse(typeof(FontIcons), iconName);return GetImage(icon, imageSize, foreColor, backColor);}catch{return null;}}    /// <summary>/// Gets the size of the icon./// </summary>/// <param name="iconName">The icon text.</param>/// <param name="graphics">The graphics.</param>/// <param name="font">The font.</param>/// <returns>Size.</returns>private static Size GetIconSize(FontIcons iconName, Graphics graphics, Font font){string text = char.ConvertFromUtf32((int)iconName);return graphics.MeasureString(text, font).ToSize();}/// <summary>/// Converts to icon./// </summary>/// <param name="srcBitmap">The source bitmap.</param>/// <param name="size">The size.</param>/// <returns>Icon.</returns>/// <exception cref="ArgumentNullException">srcBitmap</exception>private static Icon ToIcon(Bitmap srcBitmap, int size){if (srcBitmap == null){throw new ArgumentNullException("srcBitmap");}Icon icon;using (MemoryStream memoryStream = new MemoryStream()){new Bitmap(srcBitmap, new Size(size, size)).Save(memoryStream, ImageFormat.Png);Stream stream = new MemoryStream();BinaryWriter binaryWriter = new BinaryWriter(stream);if (stream.Length <= 0L){return null;}binaryWriter.Write((byte)0);binaryWriter.Write((byte)0);binaryWriter.Write((short)1);binaryWriter.Write((short)1);binaryWriter.Write((byte)size);binaryWriter.Write((byte)size);binaryWriter.Write((byte)0);binaryWriter.Write((byte)0);binaryWriter.Write((short)0);binaryWriter.Write((short)32);binaryWriter.Write((int)memoryStream.Length);binaryWriter.Write(22);binaryWriter.Write(memoryStream.ToArray());binaryWriter.Flush();binaryWriter.Seek(0, SeekOrigin.Begin);icon = new Icon(stream);stream.Dispose();}return icon;}
}

在RDIFramework.NET框架产品中整合了字体图标的使用,框架模块的图标按字体图标进行了整合加载,如下图所示。

模块字体图标

调用对应图标的代码。

var img = FontImagesHelper.GetImage("A_fa_address_card", 26, "#66B9BF");

除了上面提到的字体图标,我们还可以使用阿里巴巴矢量图标库,地址:https://www.iconfont.cn/

4、参考文章

iconfont-阿里巴巴矢量图标库

FontAwesome 字体图标中文Icon

RDIFramework.NET CS敏捷开发框架 V6.1发布(.NET6+、Framework双引擎、全网唯一)

.NET开发WinForm(C/S)项目整合三种服务访问模式(直连、WCF、WebAPI)


可前往下面的地址体验、了解详情。

http://www.guosisoft.com/product/winform

http://www.rdiframework.net/product/winform

关键字:南昌地宝网二手车_开个广告公司大概需要多少钱_小企业广告投放平台_百度推广最近怎么了

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: