<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      WinForm(C/S)項(xiàng)目中使用矢量字體(FontAwsome、Elegant)圖標(biāo)

      1、介紹

      字體圖標(biāo)在Web應(yīng)用中最為常見(jiàn),字體圖標(biāo)是矢量的,矢量圖意味著每個(gè)圖標(biāo)都能在所有大小的屏幕上完美呈現(xiàn),可以隨時(shí)更改大小和顏色,而且不失真。字體圖標(biāo)常見(jiàn)的有Font Awesome和Elegant Icon Font,她們不僅圖標(biāo)數(shù)量多,還可以免費(fèi)使用。這些圖標(biāo)如果能用在WinForm項(xiàng)目中,不僅可以帶來(lái)更加直觀的界面效果,也能讓圖標(biāo)不再局限于類似png類型,本文將介紹在WinForm項(xiàng)目中如何使用字體圖標(biāo)。

      2、字體圖標(biāo)的選擇

      網(wǎng)上IconFont資源很多,同時(shí)很多提供SVG下載的網(wǎng)站都會(huì)提供對(duì)應(yīng)的IconFont文件。本文就以:比較流行且開(kāi)源免費(fèi)的FontAwesome字體圖標(biāo)為例,講解.NET開(kāi)發(fā)的WinForm項(xiàng)目如何使用。

      FontAwesome,官網(wǎng):https://fontawesome.com.cn/v4/icons

      FontAwesome

      在上圖中,我們可以看到每個(gè)圖標(biāo)都有對(duì)應(yīng)的Unicode編碼,我們需要使用這個(gè)編碼來(lái)做圖標(biāo)的展示。

      3、使用方法

      下載字體圖標(biāo)到本地,放到項(xiàng)目相應(yīng)的位置,如在我們的項(xiàng)目中使用了兩類字體圖標(biāo),F(xiàn)ontAwesome和ElegantIcon,如下圖所示。

      字體圖標(biāo)

      圖標(biāo)

      在項(xiàng)目中定義字體編碼對(duì)應(yīng)的枚舉部分代碼如下所示。

      /// <summary>
      /// 圖標(biāo)枚舉,包含Awesome圖標(biāo)和Elegant圖標(biāo),分別以A和E開(kāi)頭
      /// </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
      }
      

      定義字體圖標(biāo)加載公共類:FontImagesHelper.cs,此類不僅支持對(duì)待加載圖標(biāo)指定尺寸大小、還可以設(shè)置前景色和背景色。

      FontImagesHelper

      FontImagesHelper.cs源碼如下:

      /// <summary>
      /// 字體圖標(biāo)圖片,awesome字體默認(rèn)加載,elegant字體在使用時(shí)延遲加載
      /// </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>
          /// 構(gòu)造函數(shù)
          /// </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>
          /// 獲取圖標(biāo)
          /// </summary>
          /// <param name="iconName">圖標(biāo)名稱</param>
          /// <param name="imageSize">圖標(biāo)大小</param>
          /// <param name="foreColor">前景色</param>
          /// <param name="backColor">背景色</param>
          /// <returns>圖標(biāo)</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>
          /// 獲取圖標(biāo)
          /// </summary>
          /// <param name="iconName">圖標(biāo)名稱</param>
          /// <param name="imageSize">圖標(biāo)大小</param>
          /// <param name="foreColor">前景色</param>
          /// <param name="backColor">背景色</param>
          /// <returns>圖標(biāo)</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>
          /// 獲取圖標(biāo)
          /// </summary>
          /// <param name="iconName">圖標(biāo)名稱</param>
          /// <param name="imageSize">圖標(biāo)大小</param>
          /// <param name="foreColor">前景色</param>
          /// <param name="backColor">背景色</param>
          /// <returns>圖標(biāo)</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框架產(chǎn)品中整合了字體圖標(biāo)的使用,框架模塊的圖標(biāo)按字體圖標(biāo)進(jìn)行了整合加載,如下圖所示。

      模塊字體圖標(biāo)

      調(diào)用對(duì)應(yīng)圖標(biāo)的代碼。

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

      除了上面提到的字體圖標(biāo),我們還可以使用阿里巴巴矢量圖標(biāo)庫(kù),地址:https://www.iconfont.cn/

      4、參考文章

      iconfont-阿里巴巴矢量圖標(biāo)庫(kù)

      FontAwesome 字體圖標(biāo)中文Icon

      RDIFramework.NET CS敏捷開(kāi)發(fā)框架 V6.1發(fā)布(.NET6+、Framework雙引擎、全網(wǎng)唯一)

      .NET開(kāi)發(fā)WinForm(C/S)項(xiàng)目整合三種服務(wù)訪問(wèn)模式(直連、WCF、WebAPI)

      posted @ 2024-12-09 10:53  .NET快速開(kāi)發(fā)框架  閱讀(1213)  評(píng)論(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 日韩AV高清在线看片| 国产精品va在线观看无码不卡| 麻豆精品在线| 毛多水多高潮高清视频| 成人国产精品日本在线观看| 扶余县| 四虎亚洲国产成人久久精品| 欧美成本人视频免费播放| 汉寿县| 一区二区亚洲精品国产精 | 国产精品中文字幕久久| 极品人妻videosss人妻| 国产精品人妻久久ai换脸| 亚洲精品美女一区二区| 长丰县| 亚洲色偷偷色噜噜狠狠99 | 久久精品久久黄色片看看| 麻豆国产成人AV在线播放| 久久96国产精品久久久| 99精品国产一区二区三区不卡| 色吊丝一区二区中文字幕| 国产成人一区二区三区视频免费| 无码av中文字幕久久专区| 国产精品无码一区二区三区电影 | 日日摸天天爽天天爽视频| 亚洲无?码A片在线观看| 欧美一区二区三区欧美日韩亚洲| 国产亚洲一二三区精品| 乱女乱妇熟女熟妇综合网| 高清免费毛片| 超碰人人超碰人人| 美女爽到高潮嗷嗷嗷叫免费网站 | 人人妻人人澡人人爽人人精品av| 五月婷婷开心中文字幕| 国产精品户外野外| 亚洲高清 一区二区三区| 日本久久久久久久做爰片日本| 国产精品国产三级国产试看| 久久精品一区二区东京热| 少妇高潮太爽了在线视频| 国产午夜福利精品视频|