如何使用旧的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吗?
.
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的评论添加了改进。