如何使用旧的MS Sans Serif字体

本文关键字:Sans Serif 字体 MS 何使用 | 更新日期: 2023-09-27 18:30:52

我正在开发一个在位图上绘制文本的程序。我必须使用旧的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无衬线,而不是MS Sans Serif。为什么 Windows 将其更改为 TrueType 字体,以及如何使用 .fon 文件?

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

如何使用旧的MS Sans Serif字体

.

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

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

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

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的评论添加了改进。