Font 对象缺少属性音高

问题描述

我正在复制 this Image->ASCII 转换器,但在 c# 中,其中一个重要的评论是:

很重要的一点是,这里使用了mm_txt->Font的设置, 所以一定要设置:

Font->Pitch = fpFixed
Font->Charset = OEM_CHARSET
Font->Name = "System"

所以在创建 System.Drawing.Font 对象时,我这样做:

const int OEM_CHARSET = 255;
Font font = new Font("System",7f,FontStyle.Regular,GraphicsUnit.Pixel,OEM_CHARSET);

但是,问题是我没有看到指定 Font 音高的选项。现在这很重要,因为没有它,文本完全扭曲。

我查看了 Font 的构造函数,发现它调用

GpStatus WINGDIPAPI GdipCreateFont( GDIPCONST GpFontFamily *fontFamily,REAL emSize,INT style,Unit unit,GpFont **font )

现在即使这样也没有 Pitch 参数的选项。

现在我想提两件事:

  1. 我已经尝试过使用 Courier New,因为认情况下字体是固定宽度的,并且图像可以正常工作,但是我想尝试使用 System 字体。
  2. 根据this文章

字体可以是等宽字体(有时称为固定间距字体),例如 Courier New 和 Lucida Console,或者它们可以是可变音高的,比如 Arial 和 Times New Roman。全部使用等宽字体绘制的字符 具有相同的宽度,而在可变间距字体中,宽度 字符因字符而异。

现在我假设上面的文本块说明 Pitch调用 Gdi+ 期间由 GdipCreateFont 自动确定。

认情况下,System 不是固定宽度,但我知道如果您在调用 GDI 函数 FIXED_PITCH 时设置 CreateFont,它可以是固定宽度。

有没有办法使用 GDI+ 来创建一个 Font 对象,并使用 System 字体系列设置 FIXED_PITCH

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)