* UIStyle: 更新获取Font.GdiCharSet 属性的方法
This commit is contained in:
parent
95252d0112
commit
0b8c69b095
@ -23,9 +23,11 @@
|
|||||||
* 2021-10-16: V3.0.8 增加系统DPI缩放自适应
|
* 2021-10-16: V3.0.8 增加系统DPI缩放自适应
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
|
|
||||||
|
using System.Collections.Concurrent;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
|
|
||||||
namespace Sunny.UI
|
namespace Sunny.UI
|
||||||
@ -307,40 +309,60 @@ namespace Sunny.UI
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public static class UIFontColor
|
public static class UIFontColor
|
||||||
{
|
{
|
||||||
public static byte GdiCharSet
|
private static readonly ConcurrentDictionary<string, byte> FontCharSets = new ConcurrentDictionary<string, byte>();
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
byte value = 1;
|
|
||||||
// 注解
|
|
||||||
// 除非在构造函数中指定了不同的字符集,否则此属性将返回 1
|
|
||||||
// Font(String, Single, FontStyle, GraphicsUnit, Byte) 。
|
|
||||||
// 此属性采用 Windows SDK 头文件 WinGDI 中定义的列表的值。 下表列出了字符集和字节值。
|
|
||||||
// 字符集 “值”
|
|
||||||
// ANSI 0
|
|
||||||
// DEFAULT 1
|
|
||||||
// 代号 2
|
|
||||||
// SHIFTJIS 128
|
|
||||||
// HANGEUL 129
|
|
||||||
// 文字 129
|
|
||||||
// GB2312 134
|
|
||||||
// CHINESEBIG5 136
|
|
||||||
// OEM 255
|
|
||||||
// JOHAB 130
|
|
||||||
// 希伯来语 177
|
|
||||||
// 阿拉伯语 178
|
|
||||||
// 希腊语 161
|
|
||||||
// 土耳其语 162
|
|
||||||
// 越南语 163
|
|
||||||
// 泰语 222
|
|
||||||
// EASTEUROPE 238
|
|
||||||
// 俄语 204
|
|
||||||
// MAC 77
|
|
||||||
// 波罗 186
|
|
||||||
|
|
||||||
if (System.Text.Encoding.Default.BodyName.ToUpper() == "GB2312") value = 134;
|
//GdiCharSet
|
||||||
return value;
|
//一个字节值,该值指定使用此 Font 字符集的 GDI 字符集。 默认值为 1。
|
||||||
|
//字符集 值
|
||||||
|
//ANSI 0
|
||||||
|
//DEFAULT 1
|
||||||
|
//象征 2
|
||||||
|
//SHIFTJIS 128
|
||||||
|
//HANGEUL 129
|
||||||
|
//HANGUL 129
|
||||||
|
//GB2312 134
|
||||||
|
//中国BIG5 136
|
||||||
|
//OEM 255
|
||||||
|
//JOHAB 130
|
||||||
|
//希伯来语 177
|
||||||
|
//阿拉伯语 178
|
||||||
|
//希腊语 161
|
||||||
|
//土耳其语 162
|
||||||
|
//越南语 163
|
||||||
|
//泰语 222
|
||||||
|
//EASTEUROPE 238
|
||||||
|
//俄语 204
|
||||||
|
//MAC 77
|
||||||
|
//波罗的海 186
|
||||||
|
|
||||||
|
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
|
||||||
|
internal class LOGFONT
|
||||||
|
{
|
||||||
|
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(System.Runtime.InteropServices.UnmanagedType.ByValTStr, SizeConst = 32)]
|
||||||
|
public string lfFaceName;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal static byte GetGdiCharSet(string fontName, float fontSize)
|
||||||
|
{
|
||||||
|
if (FontCharSets.ContainsKey(fontName)) return FontCharSets[fontName];
|
||||||
|
using Font font = new Font(fontName, fontSize);
|
||||||
|
LOGFONT obj = new LOGFONT();
|
||||||
|
font.ToLogFont(obj);
|
||||||
|
FontCharSets.TryAdd(fontName, obj.lfCharSet);
|
||||||
|
return obj.lfCharSet;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -348,7 +370,8 @@ namespace Sunny.UI
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public static Font Font()
|
public static Font Font()
|
||||||
{
|
{
|
||||||
return new Font("微软雅黑", FontSize, FontStyle.Regular, GraphicsUnit.Point, GdiCharSet);
|
byte gdiCharSet = GetGdiCharSet("微软雅黑", FontSize);
|
||||||
|
return new Font("微软雅黑", FontSize, FontStyle.Regular, GraphicsUnit.Point, gdiCharSet);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -356,7 +379,8 @@ namespace Sunny.UI
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public static Font Font(float fontSize)
|
public static Font Font(float fontSize)
|
||||||
{
|
{
|
||||||
return new Font("微软雅黑", fontSize, FontStyle.Regular, GraphicsUnit.Point, GdiCharSet);
|
byte gdiCharSet = GetGdiCharSet("微软雅黑", fontSize);
|
||||||
|
return new Font("微软雅黑", fontSize, FontStyle.Regular, GraphicsUnit.Point, gdiCharSet);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static float FontSize = 12;
|
public static float FontSize = 12;
|
||||||
@ -366,7 +390,8 @@ namespace Sunny.UI
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public static Font SubFont()
|
public static Font SubFont()
|
||||||
{
|
{
|
||||||
return new Font("微软雅黑", SubFontSize, FontStyle.Regular, GraphicsUnit.Point, GdiCharSet);
|
byte gdiCharSet = GetGdiCharSet("微软雅黑", SubFontSize);
|
||||||
|
return new Font("微软雅黑", SubFontSize, FontStyle.Regular, GraphicsUnit.Point, gdiCharSet);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static float SubFontSize = 9;
|
public static float SubFontSize = 9;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user