gpt4 book ai didi

C#:从逻辑字体 (LOGFONT) 创建字体 - 质量设置被忽略

转载 作者:太空宇宙 更新时间:2023-11-03 14:25:16 24 4
gpt4 key购买 nike

我正在尝试使用 P/Invoke 和 Font.FromLogFont 从 LOGFONT 创建 System.Drawing.Font。请求的字体已创建,但它始终具有相同的呈现质量 - 无论我为 LOGFONT 结构的 lfQuality 成员分配了哪个值。

相关代码如下:


//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 导入:

[DllImport("gdi32.dll", CharSet=CharSet.Auto)]
public static extern IntPtr CreateFontIndirect(
[In, MarshalAs(UnmanagedType.LPStruct)]
LOGFONT lplf // characteristics
);
现在创建字体:

LOGFONT lf = new LOGFONT();
lf.lfFaceName = "DejaVu Sans";
lf.lfHeight = 36;
lf.lfQuality = 5;
IntPtr handle = CreateFontIndirect(lf);<p></p>

<p>Font f = Font.FromLogFont(lf);</p>

因此托管代码似乎忽略了 lfQuality 成员。有什么办法解决这个问题吗?我想控制某些字体的呈现方式,忽略系统全局设置。

最佳答案

由于您使用的是 CLEARTYPE_QUALITY (5),因此您可能依赖于 Windows 系统的 ClearType 设置。

查看此 http://support.microsoft.com/kb/306527还有这个http://www.howtogeek.com/howto/windows-vista/why-do-my-windows-vista-fonts-look-horrible/

关于C#:从逻辑字体 (LOGFONT) 创建字体 - 质量设置被忽略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4273417/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com