如何使用旧的MS Sans Serif字体

时间:2016-01-19 07:40:07

标签: c# .net vb.net fonts

我正在开发一个在位图上绘制文本的程序。我必须使用旧的MS Sans Serif 72字体,因为我需要一个很大的像素化字体

我在C:\Windows\Fonts文件夹中找到了这个字体,但是当我使用这样的代码时:

Font myFont("MS Sans Serif", 72F, FontStyle.Regular, GraphicsUnit.Pixel)
myGraphics.DrawString(string1, font, solidBrush, New PointF(100, 10))

然后将myFont设置为 Microsoft Sans Serif ,而不是 MS Sans Serif 。为什么Windows将其更改为TrueType字体,我如何使用.fon文件?

你能告诉我如何使用 MS Sans Serif 吗?

1 个答案:

答案 0 :(得分:3)

.NET仅支持使用TrueType字体(* .ttf),以与GDI +兼容。

在.NET中使用光栅字体(* .fon)很困难,需要使用Interop来访问GDI方法。 有关如何使用pinvoke.net进行此操作的示例,请参阅TextOut

更简单的选项可能是尝试将文本渲染为位图,然后按比例放大位图以创建像素化效果,例如:

int width = 80;
int height = 80;

using (Bitmap bitmap = new Bitmap(width, height))
{
    using (Graphics graphics = Graphics.FromImage(bitmap))
    {
        var font = new Font("MS Sans Serif", 16, FontStyle.Regular, GraphicsUnit.Point);
        graphics.TextRenderingHint = TextRenderingHint.SingleBitPerPixelGridFit;
        graphics.DrawString("012345", font, Brushes.Black, 0, 0);
    }

    e.Graphics.InterpolationMode = InterpolationMode.NearestNeighbor;
    e.Graphics.DrawImage(bitmap, ClientRectangle, 0, 0, width, height, GraphicsUnit.Pixel);
}

更新:从@ HansPassant的评论中添加了改进。