Files
KJD_WebService/TEMUKJD/BaseForms/BaseForm.cs
T

99 lines
3.2 KiB
C#

using NaiBa.Util.Extension;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace TemuKJD.BaseForms
{
public partial class BaseForm : Form
{
public bool IsSetFontScaleNone { get; set; } = true;
public float FormDpi
{
get
{
return dpi;
}
}
private float dpi = 96;
public BaseForm()
{
InitializeComponent();
}
private void BaseForm_Load(object sender, EventArgs e)
{
using (Graphics graphics = Graphics.FromHwnd(IntPtr.Zero))
{
dpi = graphics.DpiX;
// 或者使用 graphics.DpiY 获取垂直方向的DPI
// float dpi = graphics.DpiY;
// Console.WriteLine("Screen DPI: " + dpi); // winform程序会闪退
if (IsSetFontScaleNone)
SetFont(this, dpi);
}
}
public void SetFont(Control control, float dpi)
{
foreach (Control c in control.Controls)
{
SetFont(c, dpi);
Font of = c.Font;
Font nf = new Font(of.FontFamily, (of.Size * 96.0 / dpi).ParseToFloat(), of.Style, of.Unit, of.GdiCharSet, of.Bold);
c.Font = nf;
if (c is DevComponents.DotNetBar.PanelEx)
{
var pEx = (c as DevComponents.DotNetBar.PanelEx);
if (pEx.Style.Font != null)
{
Font osf = pEx.Style.Font;
Font nsf = new Font(osf.FontFamily, (osf.Size * 96.0 / dpi).ParseToFloat(), osf.Style, osf.Unit, osf.GdiCharSet, osf.Bold);
pEx.Style.Font = nsf;
}
if (pEx.StyleMouseOver.Font != null)
{
Font oof = pEx.StyleMouseOver.Font;
Font nof = new Font(oof.FontFamily, (oof.Size * 96.0 / dpi).ParseToFloat(), oof.Style, oof.Unit, oof.GdiCharSet, oof.Bold);
pEx.StyleMouseOver.Font = nof;
}
if (pEx.StyleMouseDown.Font != null)
{
Font odf = pEx.StyleMouseDown.Font;
Font ndf = new Font(odf.FontFamily, (odf.Size * 96.0 / dpi).ParseToFloat(), odf.Style, odf.Unit, odf.GdiCharSet, odf.Bold);
pEx.StyleMouseDown.Font = ndf;
}
}
if (c is UserComponent.UcTreeView)
{
var tree = c as UserComponent.UcTreeView;
Font ogf = tree.GroupFont;
Font ngf = new Font(ogf.FontFamily, (ogf.Size * 96.0 / dpi).ParseToFloat(), ogf.Style, ogf.Unit, ogf.GdiCharSet, ogf.Bold);
tree.GroupFont = ngf;
}
if (c is DataGridView)
{
}
if (c.Name == "pnlSA")
{
}
}
}
}
}