183 lines
7.5 KiB
C#
183 lines
7.5 KiB
C#
using AllBase;
|
|
using AllBase.Helper;
|
|
using DevComponents.DotNetBar;
|
|
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;
|
|
using Work.UserControls;
|
|
|
|
namespace Work.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)
|
|
{
|
|
setSkinColor(this);
|
|
|
|
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 UserComponents.UcTreeView)
|
|
{
|
|
var tree = c as UserComponents.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.Name == "pnlSA")
|
|
{
|
|
}
|
|
}
|
|
}
|
|
|
|
public void setSkinColor(Control control)
|
|
{
|
|
foreach (Control c in control.Controls)
|
|
{
|
|
setSkinColor(c);
|
|
|
|
// pdd皮肤颜色
|
|
if (BaseClass.MainPath == "29pdd" || BaseClass.MainPath == "29wx")
|
|
{
|
|
if (c is Panel && c.BackColor == GlobalConfig.DefaultMainColor)
|
|
{
|
|
c.BackColor = GlobalConfig.MainColor;
|
|
}
|
|
else if (c is PanelEx && c.Name.StartsWith("btn"))
|
|
{
|
|
var pnl = c as PanelEx;
|
|
if (pnl.Style.BackColor1.Color == GlobalConfig.DefaultMainColor)
|
|
{
|
|
pnl.Style.BackColor1.Color = GlobalConfig.MainColor;
|
|
pnl.Style.BackColor2.Color = GlobalConfig.MainColor;
|
|
pnl.StyleMouseOver.BackColor1.Color = GlobalConfig.BorderColor;
|
|
pnl.StyleMouseOver.BackColor2.Color = GlobalConfig.BorderColor;
|
|
}
|
|
else if (pnl.Style.BackColor1.Color == GlobalConfig.DefaultMainColorLight || pnl.Style.BorderColor.Color == GlobalConfig.DefaultMainColor)
|
|
{
|
|
pnl.Style.BorderColor.Color = GlobalConfig.MainColor;
|
|
pnl.Style.BackColor1.Color = GlobalConfig.MainColorLight;
|
|
pnl.Style.BackColor2.Color = GlobalConfig.MainColorLight;
|
|
pnl.Style.ForeColor.Color = GlobalConfig.BorderColor;
|
|
pnl.StyleMouseOver.BackColor1.Color = GlobalConfig.BorderColor;
|
|
pnl.StyleMouseOver.BackColor2.Color = GlobalConfig.BorderColor;
|
|
}
|
|
}
|
|
else if (c is ButtonEx)
|
|
{
|
|
c.BackColor = GlobalConfig.MainColor;
|
|
}
|
|
else if (c is SplitContainer && c.BackColor == GlobalConfig.DefaultMainColor)
|
|
{
|
|
c.BackColor = GlobalConfig.MainColor;
|
|
}
|
|
else if (c is UserComponents.UcTreeView)
|
|
{
|
|
var tv = c as UserComponents.UcTreeView;
|
|
tv.ChildNodeSelectedBgColor = GlobalConfig.MainColor;
|
|
}
|
|
else if (c is UserComponents.UcGroupBoxEx && (c as UserComponents.UcGroupBoxEx).BorderColor == GlobalConfig.DefaultMainColor)
|
|
{
|
|
var gb = c as UserComponents.UcGroupBoxEx;
|
|
gb.BorderColor = GlobalConfig.MainColor;
|
|
}
|
|
else if (c is UserComponents.DataGridViewEx)
|
|
{
|
|
var dgv = c as UserComponents.DataGridViewEx;
|
|
dgv.BorderColor = GlobalConfig.MainColor;
|
|
dgv.DefaultCellStyle.SelectionBackColor = GlobalConfig.MainColor;
|
|
|
|
dgv.CheckBoxRowBoxCheckColor = GlobalConfig.MainColor;
|
|
dgv.CheckBoxRowBoxBorderColor = GlobalConfig.BorderColor;
|
|
}
|
|
else if (c is UserComponents.UcCheckBox)
|
|
{
|
|
var chk = c as UserComponents.UcCheckBox;
|
|
chk.CheckBoxCheckColor = GlobalConfig.MainColor;
|
|
chk.CheckBoxBorderColor = GlobalConfig.BorderColor;
|
|
}
|
|
else if (c is UserComponents.UcTabControl)
|
|
{
|
|
var tc = c as UserComponents.UcTabControl;
|
|
tc.TabSelectColor = GlobalConfig.MainColor;
|
|
tc.TabSelectTextColor = GlobalConfig.MainColor;
|
|
}
|
|
else if (c is UserComponents.UcTabControlMetro)
|
|
{
|
|
var tc = c as UserComponents.UcTabControlMetro;
|
|
tc.BorderColor = GlobalConfig.BorderColor;
|
|
tc.TabSelectColor = GlobalConfig.MainColor;
|
|
tc.TabSelectTextColor = GlobalConfig.MainColor;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|