C# Winform 中使用字体图标
http://www.bubuko.com/infodetail-1923328.html
需要将 &#x 替换成 \u 最终是\ue603
//使用方法
protected override void OnShown(EventArgs e) { base.OnShown(e); ImageFont.AddFontFile("./Properties/fonts/fontawesome-webfont.ttf"); toolStripButton1.Image = GetFontImage("\uf002", Color.Red,20); toolStripButton1.Text = "查询"; toolStripButton1.Font = new Font(ImageFont.Families[0], 20); } //字体图标生成图标 public static Image GetFontImage(string fontIco, Color color, int size) { var bmp = new Bitmap(size, size); var g = Graphics.FromImage(bmp); g.TextRenderingHint = TextRenderingHint.AntiAliasGridFit; g.InterpolationMode = InterpolationMode.HighQualityBilinear; g.PixelOffsetMode = PixelOffsetMode.HighQuality; g.SmoothingMode = SmoothingMode.HighQuality; var ch = fontIco; var font = GetAdjustedFont(g, ch, size, size, 4, true); var stringSize = g.MeasureString(ch, font, size); float w = stringSize.Width; float h = stringSize.Height; float left = (size - w) / 2; float top = (size - h) / 2; // Draw string to screen. var brush = new SolidBrush(color); g.DrawString(ch, font, brush, new PointF(left, top)); return bmp; } private static Font GetAdjustedFont(Graphics g, string graphicString, int containerWidth, int maxFontSize, int minFontSize, bool smallestOnFail) { for (double adjustedSize = maxFontSize; adjustedSize >= minFontSize; adjustedSize = adjustedSize - 0.5) { Font testFont = GetIconFont((float)adjustedSize); SizeF adjustedSizeNew = g.MeasureString(graphicString, testFont); if (containerWidth > Convert.ToInt32(adjustedSizeNew.Width)) { return testFont; } } return GetIconFont(smallestOnFail ? minFontSize : maxFontSize); } private static Font GetIconFont(float size) { return new Font(ImageFont.Families[0], size, GraphicsUnit.Point); }