Я пытаюсь создать System.Drawing.Font из LOGFONT, используя P / Invoke и Font.FromLogFont.Запрошенный шрифт был создан, однако он всегда имеет одинаковое качество рендеринга - независимо от того, какое значение я присвоил элементу lfQuality структуры LOGFONT.
здесь - соответствующий код:
<code>
//LOGFONT struct
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
public class LOGFONT
{
public const int LF_FACESIZE = 32;
public int lfHeight;
public int lfWidth;
public int lfEscapement;
public int lfOrientation;
public int lfWeight;
public byte lfItalic;
public byte lfUnderline;
public byte lfStrikeOut;
public byte lfCharSet;
public byte lfOutPrecision;
public byte lfClipPrecision;
public byte lfQuality;
public byte lfPitchAndFamily;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = LF_FACESIZE)]
public string lfFaceName;
}
Тогдаимпорт для CreateFontIndirect:
<code>
[DllImport("gdi32.dll", CharSet=CharSet.Auto)]
public static extern IntPtr CreateFontIndirect(
[In, MarshalAs(UnmanagedType.LPStruct)]
LOGFONT lplf // characteristics
);
Теперь создайте шрифт:
<code>
LOGFONT lf = new LOGFONT();
lf.lfFaceName = "DejaVu Sans";
lf.lfHeight = 36;
lf.lfQuality = 5;
IntPtr handle = CreateFontIndirect(lf);</p>
<p>Font f = Font.FromLogFont(lf);
Таким образом, похоже, что управляемый код игнорирует член lfQuality.Любой способ исправить это?Я хотел бы контролировать способ отрисовки некоторых шрифтов, игнорируя глобальные настройки системы.