From 83caee295e26ae0e2349352421d2ed3a24d3d159 Mon Sep 17 00:00:00 2001 From: Sunny Date: Tue, 29 Aug 2023 16:03:00 +0800 Subject: [PATCH] =?UTF-8?q?*=20=E9=87=8D=E6=9E=84=E5=85=A8=E5=B1=80?= =?UTF-8?q?=E5=AD=97=E4=BD=93=E8=AE=BE=E7=BD=AE=E9=80=BB=E8=BE=91=EF=BC=8C?= =?UTF-8?q?=E4=BB=A5=E6=9C=9F=E5=8F=AF=E4=BB=A5=E5=9C=A8=E7=A8=8B=E5=BA=8F?= =?UTF-8?q?=E8=BF=90=E8=A1=8C=E6=97=B6=E8=AE=BE=E7=BD=AE=E5=85=A8=E5=B1=80?= =?UTF-8?q?=E5=AD=97=E4=BD=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SunnyUI/Charts/UIChart.cs | 1 - SunnyUI/Controls/DropItem/UIColorItem.cs | 28 ++++------- .../DropItem/UIComboDataGridViewItem.cs | 17 ++++--- .../Controls/DropItem/UIComboTreeViewItem.cs | 11 ++--- SunnyUI/Controls/DropItem/UIDateItem.cs | 9 ++-- SunnyUI/Controls/DropItem/UIDateTimeItem.cs | 20 +++----- SunnyUI/Controls/DropItem/UIDropControl.cs | 2 +- SunnyUI/Controls/DropItem/UITimeItem.cs | 17 +++---- SunnyUI/Controls/UIButton.cs | 27 +---------- SunnyUI/Controls/UICalendar.cs | 9 ++-- SunnyUI/Controls/UIContextMenuStrip.cs | 16 ++----- SunnyUI/Controls/UIControl.cs | 3 -- SunnyUI/Controls/UIDataGridView.cs | 37 ++++++++++----- SunnyUI/Controls/UIDoubleUpDown.cs | 14 +----- SunnyUI/Controls/UIEdit.cs | 11 ++--- SunnyUI/Controls/UIHeaderButton.cs | 17 +------ SunnyUI/Controls/UIImageButton.cs | 10 ++-- SunnyUI/Controls/UIImageListBox.cs | 14 ++---- SunnyUI/Controls/UIIntegerUpDown.cs | 14 +----- SunnyUI/Controls/UIKnobControl.cs | 14 ++---- SunnyUI/Controls/UILabel.cs | 22 ++++----- SunnyUI/Controls/UIListBox.cs | 1 - SunnyUI/Controls/UIListBoxEx.cs | 13 ++--- SunnyUI/Controls/UIMiniPagination.cs | 27 ++--------- SunnyUI/Controls/UINavBar.cs | 14 ++---- SunnyUI/Controls/UINavMenu.cs | 34 ++------------ SunnyUI/Controls/UIPagination.cs | 28 ++--------- SunnyUI/Controls/UIRadioButtonGroup.cs | 1 - SunnyUI/Controls/UISmoothLabel.cs | 11 ++--- SunnyUI/Controls/UISplitContainer.cs | 3 -- SunnyUI/Controls/UITabControl.cs | 28 ++--------- SunnyUI/Controls/UITextBox.cs | 1 - SunnyUI/Controls/UIToolTip.cs | 47 +++---------------- SunnyUI/Controls/UITreeView.cs | 3 +- SunnyUI/Controls/UIUserControl.cs | 2 +- SunnyUI/Forms/UINotifier.cs | 27 ++++------- SunnyUI/Style/UIDPIScale.cs | 7 +-- 37 files changed, 157 insertions(+), 403 deletions(-) diff --git a/SunnyUI/Charts/UIChart.cs b/SunnyUI/Charts/UIChart.cs index cbc80383..87d7c90f 100644 --- a/SunnyUI/Charts/UIChart.cs +++ b/SunnyUI/Charts/UIChart.cs @@ -65,7 +65,6 @@ namespace Sunny.UI private void Tip_VisibleChanged(object sender, EventArgs e) { - tip.IsScaled = true; tip.Font = this.Font.DPIScaleFont(UIStyles.DefaultSubFontSize); } diff --git a/SunnyUI/Controls/DropItem/UIColorItem.cs b/SunnyUI/Controls/DropItem/UIColorItem.cs index c38a496b..6c4c5f4c 100644 --- a/SunnyUI/Controls/DropItem/UIColorItem.cs +++ b/SunnyUI/Controls/DropItem/UIColorItem.cs @@ -13,26 +13,16 @@ namespace Sunny.UI public override void SetDPIScale() { - if (!IsScaled) - { - m_opacitySlider.SetDPIScaleFont(); - m_colorBar.SetDPIScaleFont(); - - foreach (var label in this.GetControls()) - { - label.SetDPIScaleFont(); - } - - foreach (var label in this.GetControls()) - { - label.SetDPIScaleFont(); - } - - btnOK.SetDPIScaleFont(); - btnCancel.SetDPIScaleFont(); - } - base.SetDPIScale(); + if (DesignMode) return; + if (!UIDPIScale.NeedSetDPIFont()) return; + + m_opacitySlider.SetDPIScale(); + m_colorBar.SetDPIScale(); + btnOK.SetDPIScale(); + btnCancel.SetDPIScale(); + foreach (var label in this.GetControls()) label.SetDPIScale(); + foreach (var label in this.GetControls()) label.SetDPIScale(); } public void Translate() diff --git a/SunnyUI/Controls/DropItem/UIComboDataGridViewItem.cs b/SunnyUI/Controls/DropItem/UIComboDataGridViewItem.cs index 3ed53f6f..94ad051a 100644 --- a/SunnyUI/Controls/DropItem/UIComboDataGridViewItem.cs +++ b/SunnyUI/Controls/DropItem/UIComboDataGridViewItem.cs @@ -67,16 +67,15 @@ namespace Sunny.UI public override void SetDPIScale() { - if (!IsScaled) - { - edtFilter.SetDPIScaleFont(); - btnSearch.SetDPIScaleFont(); - btnClear.SetDPIScaleFont(); - btnOK.SetDPIScaleFont(); - btnCancel.SetDPIScaleFont(); - } - base.SetDPIScale(); + if (DesignMode) return; + if (!UIDPIScale.NeedSetDPIFont()) return; + + edtFilter.SetDPIScale(); + btnSearch.SetDPIScale(); + btnClear.SetDPIScale(); + btnOK.SetDPIScale(); + btnCancel.SetDPIScale(); } public void Translate() diff --git a/SunnyUI/Controls/DropItem/UIComboTreeViewItem.cs b/SunnyUI/Controls/DropItem/UIComboTreeViewItem.cs index c2e1c2af..7497f9c1 100644 --- a/SunnyUI/Controls/DropItem/UIComboTreeViewItem.cs +++ b/SunnyUI/Controls/DropItem/UIComboTreeViewItem.cs @@ -14,13 +14,12 @@ namespace Sunny.UI public override void SetDPIScale() { - if (!IsScaled) - { - btnOK.SetDPIScaleFont(); - btnCancel.SetDPIScaleFont(); - } - base.SetDPIScale(); + if (DesignMode) return; + if (!UIDPIScale.NeedSetDPIFont()) return; + + btnOK.SetDPIScale(); + btnCancel.SetDPIScale(); } public bool ShowSelectedAllCheckBox diff --git a/SunnyUI/Controls/DropItem/UIDateItem.cs b/SunnyUI/Controls/DropItem/UIDateItem.cs index c1ef318d..530ace02 100644 --- a/SunnyUI/Controls/DropItem/UIDateItem.cs +++ b/SunnyUI/Controls/DropItem/UIDateItem.cs @@ -330,12 +330,11 @@ namespace Sunny.UI public override void SetDPIScale() { - if (!IsScaled) - { - TopPanel.SetDPIScaleFont(); - } - base.SetDPIScale(); + if (DesignMode) return; + if (!UIDPIScale.NeedSetDPIFont()) return; + + TopPanel.SetDPIScale(); } public DateTime max = DateTime.MaxValue; diff --git a/SunnyUI/Controls/DropItem/UIDateTimeItem.cs b/SunnyUI/Controls/DropItem/UIDateTimeItem.cs index 48997c5f..6929ebdf 100644 --- a/SunnyUI/Controls/DropItem/UIDateTimeItem.cs +++ b/SunnyUI/Controls/DropItem/UIDateTimeItem.cs @@ -738,20 +738,14 @@ namespace Sunny.UI public override void SetDPIScale() { - if (!IsScaled) - { - TopPanel.SetDPIScaleFont(); - - foreach (var label in this.GetControls()) - { - label.SetDPIScaleFont(); - } - - btnOK.SetDPIScaleFont(); - btnCancel.SetDPIScaleFont(); - } - base.SetDPIScale(); + if (DesignMode) return; + if (!UIDPIScale.NeedSetDPIFont()) return; + + TopPanel.SetDPIScale(); + btnOK.SetDPIScale(); + btnCancel.SetDPIScale(); + foreach (var label in this.GetControls()) label.SetDPIScale(); } public void Translate() diff --git a/SunnyUI/Controls/DropItem/UIDropControl.cs b/SunnyUI/Controls/DropItem/UIDropControl.cs index 7dbcb688..a7d48912 100644 --- a/SunnyUI/Controls/DropItem/UIDropControl.cs +++ b/SunnyUI/Controls/DropItem/UIDropControl.cs @@ -77,8 +77,8 @@ namespace Sunny.UI protected override void OnFontChanged(EventArgs e) { base.OnFontChanged(e); - edit.IsScaled = true; edit.Font = Font; + edit.SetDPIScale(); SizeChange(); Invalidate(); } diff --git a/SunnyUI/Controls/DropItem/UITimeItem.cs b/SunnyUI/Controls/DropItem/UITimeItem.cs index 5e21de9a..db1b2b52 100644 --- a/SunnyUI/Controls/DropItem/UITimeItem.cs +++ b/SunnyUI/Controls/DropItem/UITimeItem.cs @@ -440,18 +440,13 @@ namespace Sunny.UI public override void SetDPIScale() { - if (!IsScaled) - { - foreach (var label in this.GetControls()) - { - label.SetDPIScaleFont(); - } - - btnOK.SetDPIScaleFont(); - btnCancel.SetDPIScaleFont(); - } - base.SetDPIScale(); + if (DesignMode) return; + if (!UIDPIScale.NeedSetDPIFont()) return; + + btnOK.SetDPIScale(); + btnCancel.SetDPIScale(); + foreach (var label in this.GetControls()) label.SetDPIScale(); } private void UITimeItem_MouseWheel(object sender, System.Windows.Forms.MouseEventArgs e) diff --git a/SunnyUI/Controls/UIButton.cs b/SunnyUI/Controls/UIButton.cs index 9599ccf3..5085549b 100644 --- a/SunnyUI/Controls/UIButton.cs +++ b/SunnyUI/Controls/UIButton.cs @@ -295,32 +295,6 @@ namespace Sunny.UI } } - Font tmpFont; - - private Font TempFont - { - get - { - if (tmpFont == null || !tmpFont.Size.EqualsFloat(TipsFont.DPIScaleFontSize())) - { - tmpFont?.Dispose(); - tmpFont = TipsFont.DPIScaleFont(); - } - - return tmpFont; - } - } - - /// - /// 析构函数 - /// - /// 释放参数 - protected override void Dispose(bool disposing) - { - base.Dispose(disposing); - tmpFont?.Dispose(); - } - /// /// 重载绘图 /// @@ -339,6 +313,7 @@ namespace Sunny.UI if (Enabled && ShowTips && !string.IsNullOrEmpty(TipsText)) { e.Graphics.SetHighQuality(); + using var TempFont = TipsFont.DPIScaleFont(TipsFont.Size); Size sf = TextRenderer.MeasureText(TipsText, TempFont); int sfMax = Math.Max(sf.Width, sf.Height); int x = Width - 1 - 2 - sfMax; diff --git a/SunnyUI/Controls/UICalendar.cs b/SunnyUI/Controls/UICalendar.cs index 2892886f..ac4b71f8 100644 --- a/SunnyUI/Controls/UICalendar.cs +++ b/SunnyUI/Controls/UICalendar.cs @@ -344,12 +344,11 @@ namespace Sunny.UI public override void SetDPIScale() { - if (!IsScaled) - { - TopPanel.SetDPIScaleFont(); - } - base.SetDPIScale(); + if (DesignMode) return; + if (!UIDPIScale.NeedSetDPIFont()) return; + + TopPanel.SetDPIScale(); } public void Translate() diff --git a/SunnyUI/Controls/UIContextMenuStrip.cs b/SunnyUI/Controls/UIContextMenuStrip.cs index dda8468f..f3a71d09 100644 --- a/SunnyUI/Controls/UIContextMenuStrip.cs +++ b/SunnyUI/Controls/UIContextMenuStrip.cs @@ -63,25 +63,19 @@ namespace Sunny.UI } - [Browsable(false), DefaultValue(false)] - public bool IsScaled { get; set; } + private float DefaultFontSize = -1; public void SetDPIScale() { - if (!IsScaled) - { - this.SetDPIScaleFont(); - IsScaled = true; - } + if (!UIDPIScale.NeedSetDPIFont()) return; + if (DefaultFontSize < 0) DefaultFontSize = this.Font.Size; + this.SetDPIScaleFont(DefaultFontSize); } protected override void OnOpening(CancelEventArgs e) { base.OnOpening(e); - if (!IsScaled && UIStyles.DPIScale) - { - SetDPIScale(); - } + SetDPIScale(); } /// diff --git a/SunnyUI/Controls/UIControl.cs b/SunnyUI/Controls/UIControl.cs index eb941476..da985478 100644 --- a/SunnyUI/Controls/UIControl.cs +++ b/SunnyUI/Controls/UIControl.cs @@ -78,9 +78,6 @@ namespace Sunny.UI protected bool selected; - [Browsable(false), DefaultValue(false)] - public bool IsScaled { get; set; } - private float DefaultFontSize = -1; public virtual void SetDPIScale() diff --git a/SunnyUI/Controls/UIDataGridView.cs b/SunnyUI/Controls/UIDataGridView.cs index 28a09709..00522104 100644 --- a/SunnyUI/Controls/UIDataGridView.cs +++ b/SunnyUI/Controls/UIDataGridView.cs @@ -191,22 +191,35 @@ namespace Sunny.UI } - [Browsable(false)] - public bool IsScaled { get; private set; } + float ColumnHeadersDefaultCellStyleFontSize = -1; + float RowHeadersDefaultCellStyleFontSize = -1; + float DefaultCellStyleFontSize = -1; + float RowsDefaultCellStyleFontSize = -1; public void SetDPIScale() { - if (!IsScaled) + if (ColumnHeadersDefaultCellStyle.Font != null) { - if (ColumnHeadersDefaultCellStyle.Font != null) - ColumnHeadersDefaultCellStyle.Font = ColumnHeadersDefaultCellStyle.Font.DPIScaleFont(); - if (RowHeadersDefaultCellStyle.Font != null) - RowHeadersDefaultCellStyle.Font = RowHeadersDefaultCellStyle.Font.DPIScaleFont(); - if (DefaultCellStyle.Font != null) - DefaultCellStyle.Font = DefaultCellStyle.Font.DPIScaleFont(); - if (RowsDefaultCellStyle.Font != null) - RowsDefaultCellStyle.Font = RowsDefaultCellStyle.Font.DPIScaleFont(); - IsScaled = true; + if (ColumnHeadersDefaultCellStyleFontSize < 0) ColumnHeadersDefaultCellStyleFontSize = ColumnHeadersDefaultCellStyle.Font.Size; + ColumnHeadersDefaultCellStyle.Font = ColumnHeadersDefaultCellStyle.Font.DPIScaleFont(ColumnHeadersDefaultCellStyleFontSize); + } + + if (RowHeadersDefaultCellStyle.Font != null) + { + if (RowHeadersDefaultCellStyleFontSize < 0) RowHeadersDefaultCellStyleFontSize = RowHeadersDefaultCellStyle.Font.Size; + RowHeadersDefaultCellStyle.Font = RowHeadersDefaultCellStyle.Font.DPIScaleFont(RowHeadersDefaultCellStyleFontSize); + } + + if (DefaultCellStyle.Font != null) + { + if (DefaultCellStyleFontSize < 0) DefaultCellStyleFontSize = DefaultCellStyle.Font.Size; + DefaultCellStyle.Font = DefaultCellStyle.Font.DPIScaleFont(DefaultCellStyleFontSize); + } + + if (RowsDefaultCellStyle.Font != null) + { + if (RowsDefaultCellStyleFontSize < 0) RowsDefaultCellStyleFontSize = RowsDefaultCellStyle.Font.Size; + RowsDefaultCellStyle.Font = RowsDefaultCellStyle.Font.DPIScaleFont(RowsDefaultCellStyleFontSize); } } diff --git a/SunnyUI/Controls/UIDoubleUpDown.cs b/SunnyUI/Controls/UIDoubleUpDown.cs index 602492d9..1374b357 100644 --- a/SunnyUI/Controls/UIDoubleUpDown.cs +++ b/SunnyUI/Controls/UIDoubleUpDown.cs @@ -99,18 +99,8 @@ namespace Sunny.UI protected override void OnFontChanged(EventArgs e) { base.OnFontChanged(e); - - if (pnlValue != null) - { - pnlValue.IsScaled = true; - pnlValue.Font = Font; - } - - if (edit != null) - { - edit.IsScaled = true; - edit.Font = Font; - } + pnlValue?.SetDPIScale(); + edit?.SetDPIScale(); } public event OnValueChanged ValueChanged; diff --git a/SunnyUI/Controls/UIEdit.cs b/SunnyUI/Controls/UIEdit.cs index e46e427a..104b23c2 100644 --- a/SunnyUI/Controls/UIEdit.cs +++ b/SunnyUI/Controls/UIEdit.cs @@ -173,16 +173,13 @@ namespace Sunny.UI } } - [Browsable(false), DefaultValue(false)] - public bool IsScaled { get; set; } + private float DefaultFontSize = -1; public void SetDPIScale() { - if (!IsScaled) - { - this.SetDPIScaleFont(); - IsScaled = true; - } + if (!UIDPIScale.NeedSetDPIFont()) return; + if (DefaultFontSize < 0) DefaultFontSize = this.Font.Size; + Font = UIDPIScale.SetDPIScaleFont(Font, DefaultFontSize); } [Description("开启后可响应某些触屏的点击事件"), Category("SunnyUI")] diff --git a/SunnyUI/Controls/UIHeaderButton.cs b/SunnyUI/Controls/UIHeaderButton.cs index 614c08b9..7c6312e4 100644 --- a/SunnyUI/Controls/UIHeaderButton.cs +++ b/SunnyUI/Controls/UIHeaderButton.cs @@ -727,6 +727,7 @@ namespace Sunny.UI if (Enabled && ShowTips && !string.IsNullOrEmpty(TipsText)) { e.Graphics.SetHighQuality(); + using var TempFont = TipsFont.DPIScaleFont(TipsFont.Size); Size sf = TextRenderer.MeasureText(TipsText, TempFont); int sfMax = Math.Max(sf.Width, sf.Height); int x = Width - 1 - 2 - sfMax; @@ -736,22 +737,6 @@ namespace Sunny.UI } } - Font tmpFont; - - private Font TempFont - { - get - { - if (tmpFont == null || !tmpFont.Size.EqualsFloat(TipsFont.DPIScaleFontSize())) - { - tmpFont?.Dispose(); - tmpFont = TipsFont.DPIScaleFont(); - } - - return tmpFont; - } - } - [DefaultValue(null)] [Description("关联的TabControl"), Category("SunnyUI")] public UITabControl TabControl { get; set; } diff --git a/SunnyUI/Controls/UIImageButton.cs b/SunnyUI/Controls/UIImageButton.cs index 668cd554..05a18eda 100644 --- a/SunnyUI/Controls/UIImageButton.cs +++ b/SunnyUI/Controls/UIImageButton.cs @@ -117,15 +117,13 @@ namespace Sunny.UI } private UIStyle _style = UIStyle.Blue; - public bool IsScaled { get; private set; } + private float DefaultFontSize = -1; public void SetDPIScale() { - if (!IsScaled) - { - this.SetDPIScaleFont(); - IsScaled = true; - } + if (!UIDPIScale.NeedSetDPIFont()) return; + if (DefaultFontSize < 0) DefaultFontSize = this.Font.Size; + this.SetDPIScaleFont(DefaultFontSize); } [Category("SunnyUI")] diff --git a/SunnyUI/Controls/UIImageListBox.cs b/SunnyUI/Controls/UIImageListBox.cs index 7a67a361..c1db4b5d 100644 --- a/SunnyUI/Controls/UIImageListBox.cs +++ b/SunnyUI/Controls/UIImageListBox.cs @@ -223,7 +223,6 @@ namespace Sunny.UI protected override void OnFontChanged(EventArgs e) { base.OnFontChanged(e); - listbox.IsScaled = true; listbox.Font = Font; } @@ -461,7 +460,7 @@ namespace Sunny.UI } [ToolboxItem(false)] - private sealed class ImageListBox : ListBox + private sealed class ImageListBox : ListBox, IStyleInterface { private UIScrollBar bar; @@ -482,16 +481,13 @@ namespace Sunny.UI } } - [Browsable(false), DefaultValue(false)] - public bool IsScaled { get; set; } + private float DefaultFontSize = -1; public void SetDPIScale() { - if (!IsScaled) - { - this.SetDPIScaleFont(); - IsScaled = true; - } + if (!UIDPIScale.NeedSetDPIFont()) return; + if (DefaultFontSize < 0) DefaultFontSize = this.Font.Size; + this.SetDPIScaleFont(DefaultFontSize); } //protected override void WndProc(ref Message m) diff --git a/SunnyUI/Controls/UIIntegerUpDown.cs b/SunnyUI/Controls/UIIntegerUpDown.cs index 76a43cea..34fbdbd7 100644 --- a/SunnyUI/Controls/UIIntegerUpDown.cs +++ b/SunnyUI/Controls/UIIntegerUpDown.cs @@ -117,18 +117,8 @@ namespace Sunny.UI protected override void OnFontChanged(EventArgs e) { base.OnFontChanged(e); - - if (pnlValue != null) - { - pnlValue.IsScaled = true; - pnlValue.Font = Font; - } - - if (edit != null) - { - edit.IsScaled = true; - edit.Font = Font; - } + pnlValue?.SetDPIScale(); + edit?.SetDPIScale(); } private int step = 1; diff --git a/SunnyUI/Controls/UIKnobControl.cs b/SunnyUI/Controls/UIKnobControl.cs index b404c3f3..2751a439 100644 --- a/SunnyUI/Controls/UIKnobControl.cs +++ b/SunnyUI/Controls/UIKnobControl.cs @@ -1323,17 +1323,13 @@ namespace Sunny.UI #endregion - [Browsable(false), DefaultValue(false)] - public bool IsScaled { get; set; } + private float DefaultFontSize = -1; - public virtual void SetDPIScale() + public void SetDPIScale() { - if (DesignMode) return; - if (!IsScaled) - { - this.SetDPIScaleFont(); - IsScaled = true; - } + if (!UIDPIScale.NeedSetDPIFont()) return; + if (DefaultFontSize < 0) DefaultFontSize = this.Font.Size; + this.SetDPIScaleFont(DefaultFontSize); } public string Version diff --git a/SunnyUI/Controls/UILabel.cs b/SunnyUI/Controls/UILabel.cs index 5349a260..9de73dd2 100644 --- a/SunnyUI/Controls/UILabel.cs +++ b/SunnyUI/Controls/UILabel.cs @@ -76,16 +76,13 @@ namespace Sunny.UI } } - [Browsable(false), DefaultValue(false)] - public bool IsScaled { get; set; } + private float DefaultFontSize = -1; public void SetDPIScale() { - if (!IsScaled) - { - this.SetDPIScaleFont(); - IsScaled = true; - } + if (!UIDPIScale.NeedSetDPIFont()) return; + if (DefaultFontSize < 0) DefaultFontSize = this.Font.Size; + this.SetDPIScaleFont(DefaultFontSize); } /// @@ -213,16 +210,13 @@ namespace Sunny.UI } - [Browsable(false)] - public bool IsScaled { get; private set; } + private float DefaultFontSize = -1; public void SetDPIScale() { - if (!IsScaled) - { - this.SetDPIScaleFont(); - IsScaled = true; - } + if (!UIDPIScale.NeedSetDPIFont()) return; + if (DefaultFontSize < 0) DefaultFontSize = this.Font.Size; + this.SetDPIScaleFont(DefaultFontSize); } /// diff --git a/SunnyUI/Controls/UIListBox.cs b/SunnyUI/Controls/UIListBox.cs index 0cd0c3ec..b6079913 100644 --- a/SunnyUI/Controls/UIListBox.cs +++ b/SunnyUI/Controls/UIListBox.cs @@ -413,7 +413,6 @@ namespace Sunny.UI protected override void OnFontChanged(EventArgs e) { base.OnFontChanged(e); - listbox.IsScaled = true; listbox.Font = Font; } diff --git a/SunnyUI/Controls/UIListBoxEx.cs b/SunnyUI/Controls/UIListBoxEx.cs index cfeac193..11b11e6b 100644 --- a/SunnyUI/Controls/UIListBoxEx.cs +++ b/SunnyUI/Controls/UIListBoxEx.cs @@ -31,7 +31,7 @@ namespace Sunny.UI /// ListBox /// [ToolboxItem(false)] - internal sealed class ListBoxEx : ListBox + internal sealed class ListBoxEx : ListBox, IStyleInterface { private UIScrollBar bar; @@ -42,16 +42,13 @@ namespace Sunny.UI [Description("获取或设置包含有关控件的数据的对象字符串"), Category("SunnyUI")] public string TagString { get; set; } - [Browsable(false), DefaultValue(false)] - public bool IsScaled { get; set; } + private float DefaultFontSize = -1; public void SetDPIScale() { - if (!IsScaled) - { - this.SetDPIScaleFont(); - IsScaled = true; - } + if (!UIDPIScale.NeedSetDPIFont()) return; + if (DefaultFontSize < 0) DefaultFontSize = this.Font.Size; + this.SetDPIScaleFont(DefaultFontSize); } public UIScrollBar Bar diff --git a/SunnyUI/Controls/UIMiniPagination.cs b/SunnyUI/Controls/UIMiniPagination.cs index 2d4f9f80..aee7ab1c 100644 --- a/SunnyUI/Controls/UIMiniPagination.cs +++ b/SunnyUI/Controls/UIMiniPagination.cs @@ -145,29 +145,10 @@ namespace Sunny.UI protected override void OnFontChanged(EventArgs e) { base.OnFontChanged(e); - foreach (var item in this.GetControls(true)) - { - item.IsScaled = true; - item.Font = Font; - } - - foreach (var item in this.GetControls(true)) - { - item.IsScaled = true; - item.Font = Font; - } - - foreach (var item in this.GetControls(true)) - { - item.IsScaled = true; - item.Font = Font; - } - - foreach (var item in this.GetControls(true)) - { - item.IsScaled = true; - item.Font = Font; - } + foreach (var item in this.GetControls(true)) item.Font = Font; + foreach (var item in this.GetControls(true)) item.Font = Font; + foreach (var item in this.GetControls(true)) item.Font = Font; + foreach (var item in this.GetControls(true)) item.Font = Font; } private int buttonInterval = 8; diff --git a/SunnyUI/Controls/UINavBar.cs b/SunnyUI/Controls/UINavBar.cs index b2b33ff6..6aa265da 100644 --- a/SunnyUI/Controls/UINavBar.cs +++ b/SunnyUI/Controls/UINavBar.cs @@ -91,16 +91,13 @@ namespace Sunny.UI Invalidate(); } - [Browsable(false)] - public bool IsScaled { get; private set; } + private float DefaultFontSize = -1; public void SetDPIScale() { - if (!IsScaled) - { - this.SetDPIScaleFont(); - IsScaled = true; - } + if (!UIDPIScale.NeedSetDPIFont()) return; + if (DefaultFontSize < 0) DefaultFontSize = this.Font.Size; + this.SetDPIScaleFont(DefaultFontSize); } private int radius; @@ -645,8 +642,7 @@ namespace Sunny.UI NavBarMenu.Style = UIStyles.Style; NavBarMenu.Items.Clear(); NavBarMenu.ImageList = ImageList; - NavBarMenu.IsScaled = false; - NavBarMenu.Font = DropMenuFont; + NavBarMenu.Font = DropMenuFont.SetDPIScaleFont(DropMenuFont.Size); foreach (TreeNode node in Nodes[SelectedIndex].Nodes) { ToolStripMenuItem item = new ToolStripMenuItem(node.Text) { Tag = node }; diff --git a/SunnyUI/Controls/UINavMenu.cs b/SunnyUI/Controls/UINavMenu.cs index 3bbbbf6f..97172ee8 100644 --- a/SunnyUI/Controls/UINavMenu.cs +++ b/SunnyUI/Controls/UINavMenu.cs @@ -197,22 +197,13 @@ namespace Sunny.UI } } - protected override void Dispose(bool disposing) - { - base.Dispose(disposing); - tmpFont?.Dispose(); - } - - [Browsable(false)] - public bool IsScaled { get; private set; } + private float DefaultFontSize = -1; public void SetDPIScale() { - if (!IsScaled) - { - this.SetDPIScaleFont(); - IsScaled = true; - } + if (!UIDPIScale.NeedSetDPIFont()) return; + if (DefaultFontSize < 0) DefaultFontSize = this.Font.Size; + this.SetDPIScaleFont(DefaultFontSize); } [DefaultValue(false)] @@ -757,6 +748,7 @@ namespace Sunny.UI //显示Tips圆圈 if (ShowTips && MenuHelper.GetTipsText(e.Node).IsValid()) { + using var TempFont = TipsFont.DPIScaleFont(TipsFont.Size); Size tipsSize = TextRenderer.MeasureText(MenuHelper.GetTipsText(e.Node), TempFont); int sfMax = Math.Max(tipsSize.Width, tipsSize.Height); int tipsLeft = Width - sfMax - 16; @@ -784,22 +776,6 @@ namespace Sunny.UI base.OnDrawNode(e); } - Font tmpFont; - - private Font TempFont - { - get - { - if (tmpFont == null || !tmpFont.Size.EqualsFloat(TipsFont.DPIScaleFontSize())) - { - tmpFont?.Dispose(); - tmpFont = TipsFont.DPIScaleFont(); - } - - return tmpFont; - } - } - private Color tipsColor = Color.Red; [DefaultValue(typeof(Color), "Red"), Category("SunnyUI"), Description("节点提示圆点背景颜色")] diff --git a/SunnyUI/Controls/UIPagination.cs b/SunnyUI/Controls/UIPagination.cs index 3f1ebec0..49c47de1 100644 --- a/SunnyUI/Controls/UIPagination.cs +++ b/SunnyUI/Controls/UIPagination.cs @@ -140,30 +140,10 @@ namespace Sunny.UI protected override void OnFontChanged(EventArgs e) { base.OnFontChanged(e); - foreach (var item in this.GetControls(true)) - { - item.IsScaled = true; - item.Font = Font; - } - - foreach (var item in this.GetControls(true)) - { - item.IsScaled = true; - item.Font = Font; - } - - foreach (var item in this.GetControls(true)) - { - item.IsScaled = true; - item.Font = Font; - } - - foreach (var item in this.GetControls(true)) - { - item.IsScaled = true; - item.Font = Font; - } - + foreach (var item in this.GetControls(true)) item.SetDPIScale(); + foreach (var item in this.GetControls(true)) item.SetDPIScale(); + foreach (var item in this.GetControls(true)) item.SetDPIScale(); + foreach (var item in this.GetControls(true)) item.SetDPIScale(); Translate(); } diff --git a/SunnyUI/Controls/UIRadioButtonGroup.cs b/SunnyUI/Controls/UIRadioButtonGroup.cs index 08922295..2e2998e3 100644 --- a/SunnyUI/Controls/UIRadioButtonGroup.cs +++ b/SunnyUI/Controls/UIRadioButtonGroup.cs @@ -110,7 +110,6 @@ namespace Sunny.UI Parent = this, TagString = i.ToString(), Style = Style, - IsScaled = IsScaled, Text = Items[i]?.ToString(), StyleCustomMode = StyleCustomMode, ForeColor = ForeColor diff --git a/SunnyUI/Controls/UISmoothLabel.cs b/SunnyUI/Controls/UISmoothLabel.cs index eb5518cf..bf4ad335 100644 --- a/SunnyUI/Controls/UISmoothLabel.cs +++ b/SunnyUI/Controls/UISmoothLabel.cs @@ -87,16 +87,13 @@ namespace Sunny.UI } - [Browsable(false), DefaultValue(false)] - public bool IsScaled { get; set; } + private float DefaultFontSize = -1; public void SetDPIScale() { - if (!IsScaled) - { - this.SetDPIScaleFont(); - IsScaled = true; - } + if (!UIDPIScale.NeedSetDPIFont()) return; + if (DefaultFontSize < 0) DefaultFontSize = this.Font.Size; + this.SetDPIScaleFont(DefaultFontSize); } private Color foreColor; diff --git a/SunnyUI/Controls/UISplitContainer.cs b/SunnyUI/Controls/UISplitContainer.cs index c91280f8..d579c639 100644 --- a/SunnyUI/Controls/UISplitContainer.cs +++ b/SunnyUI/Controls/UISplitContainer.cs @@ -288,9 +288,6 @@ namespace Sunny.UI get; set; } - [Browsable(false), DefaultValue(false)] - public bool IsScaled { get; set; } - public void Collapse() { if (_collapsePanel != UICollapsePanel.None && SplitPanelState == UISplitPanelState.Expanded) diff --git a/SunnyUI/Controls/UITabControl.cs b/SunnyUI/Controls/UITabControl.cs index 43aeea0b..bde79f73 100644 --- a/SunnyUI/Controls/UITabControl.cs +++ b/SunnyUI/Controls/UITabControl.cs @@ -166,16 +166,13 @@ namespace Sunny.UI } } - [Browsable(false)] - public bool IsScaled { get; private set; } + private float DefaultFontSize = -1; public void SetDPIScale() { - if (!IsScaled) - { - this.SetDPIScaleFont(); - IsScaled = true; - } + if (!UIDPIScale.NeedSetDPIFont()) return; + if (DefaultFontSize < 0) DefaultFontSize = this.Font.Size; + this.SetDPIScaleFont(DefaultFontSize); } protected override void Dispose(bool disposing) @@ -696,6 +693,7 @@ namespace Sunny.UI string TipsText = GetTipsText(TabPages[index]); if (Enabled && TipsText.IsValid()) { + using var TempFont = TipsFont.DPIScaleFont(TipsFont.Size); sf = TextRenderer.MeasureText(TipsText, TempFont); int sfMax = Math.Max(sf.Width, sf.Height); int x = TabRect.Width - 1 - 2 - sfMax; @@ -734,22 +732,6 @@ namespace Sunny.UI } } - Font tmpFont; - - private Font TempFont - { - get - { - if (tmpFont == null || !tmpFont.Size.EqualsFloat(TipsFont.DPIScaleFontSize())) - { - tmpFont?.Dispose(); - tmpFont = TipsFont.DPIScaleFont(); - } - - return tmpFont; - } - } - /// /// 重载鼠标按下事件 /// diff --git a/SunnyUI/Controls/UITextBox.cs b/SunnyUI/Controls/UITextBox.cs index c5d65687..2ce4fda7 100644 --- a/SunnyUI/Controls/UITextBox.cs +++ b/SunnyUI/Controls/UITextBox.cs @@ -650,7 +650,6 @@ namespace Sunny.UI protected override void OnFontChanged(EventArgs e) { base.OnFontChanged(e); - edit.IsScaled = true; edit.Font = Font; SizeChange(); Invalidate(); diff --git a/SunnyUI/Controls/UIToolTip.cs b/SunnyUI/Controls/UIToolTip.cs index 79311943..5454f36b 100644 --- a/SunnyUI/Controls/UIToolTip.cs +++ b/SunnyUI/Controls/UIToolTip.cs @@ -44,19 +44,11 @@ namespace Sunny.UI InitOwnerDraw(); } - public UIToolTip(IContainer cont) - : base(cont) + public UIToolTip(IContainer cont) : base(cont) { InitOwnerDraw(); } - protected override void Dispose(bool disposing) - { - base.Dispose(disposing); - tmpTitleFont?.Dispose(); - tmpFont?.Dispose(); - } - [DefaultValue(typeof(Font), "微软雅黑, 9pt"), Description("字体"), Category("SunnyUI")] public Font Font { get; set; } = new Font("宋体", 9); @@ -172,6 +164,9 @@ namespace Sunny.UI private void UIToolTip_Popup(object sender, PopupEventArgs e) { + using var TempFont = Font.DPIScaleFont(Font.Size); + using var TempTitleFont = TitleFont.DPIScaleFont(TitleFont.Size); + if (ToolTipControls.ContainsKey(e.AssociatedControl)) { var tooltip = ToolTipControls[e.AssociatedControl]; @@ -206,43 +201,13 @@ namespace Sunny.UI } } - Font tmpFont; - - private Font TempFont - { - get - { - if (tmpFont == null || !tmpFont.Size.EqualsFloat(Font.DPIScaleFontSize())) - { - tmpFont?.Dispose(); - tmpFont = Font.DPIScaleFont(); - } - - return tmpFont; - } - } - - Font tmpTitleFont; - - private Font TempTitleFont - { - get - { - if (tmpTitleFont == null || !tmpTitleFont.Size.EqualsFloat(TitleFont.DPIScaleFontSize())) - { - tmpTitleFont?.Dispose(); - tmpTitleFont = TitleFont.DPIScaleFont(); - } - - return tmpTitleFont; - } - } - private void ToolTipExDraw(object sender, DrawToolTipEventArgs e) { var bounds = new Rectangle(e.Bounds.Left, e.Bounds.Top, e.Bounds.Width - 1, e.Bounds.Height - 1); e.Graphics.FillRectangle(BackColor, bounds); e.Graphics.DrawRectangle(RectColor, bounds); + using var TempFont = Font.DPIScaleFont(Font.Size); + using var TempTitleFont = TitleFont.DPIScaleFont(TitleFont.Size); if (ToolTipControls.ContainsKey(e.AssociatedControl)) { diff --git a/SunnyUI/Controls/UITreeView.cs b/SunnyUI/Controls/UITreeView.cs index f0ff0912..31208074 100644 --- a/SunnyUI/Controls/UITreeView.cs +++ b/SunnyUI/Controls/UITreeView.cs @@ -746,7 +746,6 @@ namespace Sunny.UI base.OnFontChanged(e); if (view != null) { - view.IsScaled = true; view.Font = Font; } } @@ -925,7 +924,7 @@ namespace Sunny.UI if (DesignMode) return; if (!UIDPIScale.NeedSetDPIFont()) return; if (DefaultFontSize < 0) DefaultFontSize = this.Font.Size; - this.SetDPIScaleFont(DefaultFontSize); + this.Font = UIDPIScale.SetDPIScaleFont(this.Font, DefaultFontSize); } [DefaultValue(typeof(Color), "155, 200, 255")] diff --git a/SunnyUI/Controls/UIUserControl.cs b/SunnyUI/Controls/UIUserControl.cs index d159b2fa..5f81f043 100644 --- a/SunnyUI/Controls/UIUserControl.cs +++ b/SunnyUI/Controls/UIUserControl.cs @@ -84,7 +84,7 @@ namespace Sunny.UI private float DefaultFontSize = -1; - public void SetDPIScale() + public virtual void SetDPIScale() { if (DesignMode) return; if (!UIDPIScale.NeedSetDPIFont()) return; diff --git a/SunnyUI/Forms/UINotifier.cs b/SunnyUI/Forms/UINotifier.cs index d96656d1..1a74e3a6 100644 --- a/SunnyUI/Forms/UINotifier.cs +++ b/SunnyUI/Forms/UINotifier.cs @@ -41,26 +41,17 @@ namespace Sunny.UI { public sealed partial class UINotifier : Form { - - [Browsable(false)] - public bool IsScaled { get; private set; } - public void SetDPIScale() { - if (!IsScaled && UIStyles.DPIScale) + Font = UIDPIScale.SetDPIScaleFont(Font, Font.Size); + + noteTitle.Font = noteTitle.Font.DPIScaleFont(noteTitle.Font.Size); + noteContent.Font = noteContent.Font.DPIScaleFont(noteContent.Font.Size); + noteDate.Font = noteDate.Font.DPIScaleFont(noteDate.Font.Size); + + foreach (var control in this.GetAllDPIScaleControls()) { - this.SetDPIScaleFont(); - - noteTitle.Font = noteTitle.Font.DPIScaleFont(); - noteContent.Font = noteContent.Font.DPIScaleFont(); - noteDate.Font = noteDate.Font.DPIScaleFont(); - - foreach (Control control in this.GetAllDPIScaleControls()) - { - control.SetDPIScaleFont(); - } - - IsScaled = true; + control.SetDPIScale(); } } @@ -385,7 +376,7 @@ namespace Sunny.UI //------------------------------------------------------------------------------------------------------------------------------- private void onMenuClick(object sender, EventArgs e) { - closeAllToolStripMenuItem.Font = menu.Font.DPIScaleFont(); + closeAllToolStripMenuItem.Font = menu.Font.DPIScaleFont(menu.Font.Size); menu.Show(buttonMenu, new Point(0, buttonMenu.Height)); } diff --git a/SunnyUI/Style/UIDPIScale.cs b/SunnyUI/Style/UIDPIScale.cs index 25a32172..40d7060f 100644 --- a/SunnyUI/Style/UIDPIScale.cs +++ b/SunnyUI/Style/UIDPIScale.cs @@ -67,13 +67,10 @@ namespace Sunny.UI } } - internal static void SetDPIScaleFont(this Control control, float fontSize) + internal static void SetDPIScaleFont(this T control, float fontSize) where T : Control, IStyleInterface { if (!UIDPIScale.NeedSetDPIFont()) return; - if (control is IStyleInterface ctrl) - { - control.Font = SetDPIScaleFont(control.Font, fontSize); - } + control.Font = SetDPIScaleFont(control.Font, fontSize); } internal static Font SetDPIScaleFont(this Font font, float fontSize) => UIDPIScale.NeedSetDPIFont() ? font.DPIScaleFont(fontSize) : font;