From 76426019e3c90ac6012738a7a4f265d5b2a2e299 Mon Sep 17 00:00:00 2001 From: Sunny Date: Sun, 9 Mar 2025 21:17:23 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0Demo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SunnyUI.Demo/FMain.cs | 12 +- SunnyUI.Demo/Industrial/FLed.Designer.cs | 18 ++- SunnyUI.Demo/Industrial/FLed.cs | 2 +- SunnyUI.Demo/Industrial/FLight.Designer.cs | 118 ++++++++++++++++++ SunnyUI.Demo/Industrial/FLight.cs | 22 ++++ SunnyUI.Demo/Properties/Resources.Designer.cs | 30 +++++ SunnyUI.Demo/Properties/Resources.resx | 9 ++ SunnyUI.Demo/Resources/led_g.png | Bin 0 -> 2693 bytes SunnyUI.Demo/Resources/led_r.png | Bin 0 -> 64249 bytes SunnyUI.Demo/Resources/led_y.png | Bin 0 -> 2517 bytes SunnyUI.Demo/SunnyUI.Demo.csproj | 3 + 11 files changed, 209 insertions(+), 5 deletions(-) create mode 100644 SunnyUI.Demo/Resources/led_g.png create mode 100644 SunnyUI.Demo/Resources/led_r.png create mode 100644 SunnyUI.Demo/Resources/led_y.png diff --git a/SunnyUI.Demo/FMain.cs b/SunnyUI.Demo/FMain.cs index a68293f0..1d83ff6c 100644 --- a/SunnyUI.Demo/FMain.cs +++ b/SunnyUI.Demo/FMain.cs @@ -6,10 +6,10 @@ using System.Windows.Forms; namespace Sunny.UI.Demo { /// - /// Windows10、Windows11 建议用UIForm2,更接近原生窗体使用体验,用UIForm也可以 - /// WindowsXP、Windows7 建议使用UIForm + /// WindowsXP、Windows7、Windows10、Windows11 建议使用 UIForm + /// Windows10、Windows11 可尝试使用 UIForm2,更接近原生窗体使用体验,用 UIForm 也可以 /// - public partial class FMain : UIForm2 + public partial class FMain : UIForm { public FMain() { @@ -115,6 +115,7 @@ namespace Sunny.UI.Demo uiNavMenu1.SelectPage(1002); uiPanel2.Text = Text = Version; + //设置全局热键 RegisterHotKey(UI.ModifierKeys.Shift, Keys.F8); //根据页面类型获取页面 @@ -176,6 +177,11 @@ namespace Sunny.UI.Demo Process.Start("https://gitee.com/yhuse/SunnyUI"); } + /// + /// 全局热键事件 + /// + /// + /// private void Form1_HotKeyEventHandler(object sender, HotKeyEventArgs e) { if (e.hotKey.ModifierKey == UI.ModifierKeys.Shift && e.hotKey.Key == Keys.F8) diff --git a/SunnyUI.Demo/Industrial/FLed.Designer.cs b/SunnyUI.Demo/Industrial/FLed.Designer.cs index c3eb64ac..4fa2cab2 100644 --- a/SunnyUI.Demo/Industrial/FLed.Designer.cs +++ b/SunnyUI.Demo/Industrial/FLed.Designer.cs @@ -56,6 +56,7 @@ namespace Sunny.UI.Demo this.uiDigitalLabel2 = new Sunny.UI.UIDigitalLabel(); this.uiDigitalLabel1 = new Sunny.UI.UIDigitalLabel(); this.uiLine4 = new Sunny.UI.UILine(); + this.uiBattery7 = new Sunny.UI.UIBattery(); this.SuspendLayout(); // // uiBattery6 @@ -170,7 +171,7 @@ namespace Sunny.UI.Demo this.uiLedStopwatch1.Name = "uiLedStopwatch1"; this.uiLedStopwatch1.Size = new System.Drawing.Size(190, 34); this.uiLedStopwatch1.TabIndex = 61; - this.uiLedStopwatch1.Text = "12:50"; + this.uiLedStopwatch1.Text = "01:05"; // // uiLedDisplay1 // @@ -359,11 +360,25 @@ namespace Sunny.UI.Demo this.uiLine4.Text = "UIDigitalLabel"; this.uiLine4.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; // + // uiBattery7 + // + this.uiBattery7.Font = new System.Drawing.Font("宋体", 12F); + this.uiBattery7.Location = new System.Drawing.Point(42, 410); + this.uiBattery7.MinimumSize = new System.Drawing.Size(1, 1); + this.uiBattery7.Name = "uiBattery7"; + this.uiBattery7.Size = new System.Drawing.Size(73, 105); + this.uiBattery7.SymbolOffset = new System.Drawing.Point(1, 3); + this.uiBattery7.SymbolRotate = 270; + this.uiBattery7.SymbolSize = 100; + this.uiBattery7.TabIndex = 110; + this.uiBattery7.Text = "uiBattery7"; + // // FLed // this.AllowShowTitle = true; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; this.ClientSize = new System.Drawing.Size(800, 555); + this.Controls.Add(this.uiBattery7); this.Controls.Add(this.uiLine4); this.Controls.Add(this.uiDigitalLabel2); this.Controls.Add(this.uiDigitalLabel1); @@ -426,5 +441,6 @@ namespace Sunny.UI.Demo private UIDigitalLabel uiDigitalLabel2; private UIDigitalLabel uiDigitalLabel1; private UILine uiLine4; + private UIBattery uiBattery7; } } \ No newline at end of file diff --git a/SunnyUI.Demo/Industrial/FLed.cs b/SunnyUI.Demo/Industrial/FLed.cs index c4f64433..6ba8cd7e 100644 --- a/SunnyUI.Demo/Industrial/FLed.cs +++ b/SunnyUI.Demo/Industrial/FLed.cs @@ -19,7 +19,7 @@ private void timer1_Tick(object sender, System.EventArgs e) { value++; - uiBattery1.Power = value; + uiBattery7.Power = uiBattery1.Power = value; uiLedDisplay1.Text = value + " Ω"; uiDigitalLabel2.Value += 0.1; } diff --git a/SunnyUI.Demo/Industrial/FLight.Designer.cs b/SunnyUI.Demo/Industrial/FLight.Designer.cs index 2a09bcae..4434bdac 100644 --- a/SunnyUI.Demo/Industrial/FLight.Designer.cs +++ b/SunnyUI.Demo/Industrial/FLight.Designer.cs @@ -45,6 +45,12 @@ namespace Sunny.UI.Demo this.uiLedBulb6 = new Sunny.UI.UILedBulb(); this.uiLight5 = new Sunny.UI.UILight(); this.uiLight6 = new Sunny.UI.UILight(); + this.uiStatusBox1 = new Sunny.UI.UIStatusBox(); + this.uiLine1 = new Sunny.UI.UILine(); + this.uiButton1 = new Sunny.UI.UIButton(); + this.uiButton2 = new Sunny.UI.UIButton(); + this.uiButton3 = new Sunny.UI.UIButton(); + ((System.ComponentModel.ISupportInitialize)(this.uiStatusBox1)).BeginInit(); this.SuspendLayout(); // // uiLedBulb4 @@ -78,7 +84,9 @@ namespace Sunny.UI.Demo // // uiLine8 // + this.uiLine8.BackColor = System.Drawing.Color.Transparent; this.uiLine8.Font = new System.Drawing.Font("宋体", 12F); + this.uiLine8.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48))))); this.uiLine8.Location = new System.Drawing.Point(381, 55); this.uiLine8.MinimumSize = new System.Drawing.Size(16, 16); this.uiLine8.Name = "uiLine8"; @@ -144,7 +152,9 @@ namespace Sunny.UI.Demo // // uiLine2 // + this.uiLine2.BackColor = System.Drawing.Color.Transparent; this.uiLine2.Font = new System.Drawing.Font("宋体", 12F); + this.uiLine2.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48))))); this.uiLine2.Location = new System.Drawing.Point(30, 55); this.uiLine2.MinimumSize = new System.Drawing.Size(16, 16); this.uiLine2.Name = "uiLine2"; @@ -223,11 +233,113 @@ namespace Sunny.UI.Demo this.uiLight6.TabIndex = 75; this.uiLight6.Text = "uiLight6"; // + // uiStatusBox1 + // + this.uiStatusBox1.Image = global::Sunny.UI.Demo.Properties.Resources.led_g; + this.uiStatusBox1.Location = new System.Drawing.Point(30, 272); + this.uiStatusBox1.Name = "uiStatusBox1"; + this.uiStatusBox1.Size = new System.Drawing.Size(36, 36); + this.uiStatusBox1.Status1 = global::Sunny.UI.Demo.Properties.Resources.led_g; + this.uiStatusBox1.Status2 = global::Sunny.UI.Demo.Properties.Resources.led_y; + this.uiStatusBox1.Status3 = global::Sunny.UI.Demo.Properties.Resources.led_r; + this.uiStatusBox1.TabIndex = 77; + this.uiStatusBox1.TabStop = false; + // + // uiLine1 + // + this.uiLine1.BackColor = System.Drawing.Color.Transparent; + this.uiLine1.Font = new System.Drawing.Font("宋体", 12F); + this.uiLine1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48))))); + this.uiLine1.Location = new System.Drawing.Point(30, 230); + this.uiLine1.MinimumSize = new System.Drawing.Size(16, 16); + this.uiLine1.Name = "uiLine1"; + this.uiLine1.Size = new System.Drawing.Size(319, 20); + this.uiLine1.TabIndex = 79; + this.uiLine1.Text = "UILight"; + this.uiLine1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // uiButton1 + // + this.uiButton1.Cursor = System.Windows.Forms.Cursors.Hand; + this.uiButton1.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(110)))), ((int)(((byte)(190)))), ((int)(((byte)(40))))); + this.uiButton1.FillColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(110)))), ((int)(((byte)(190)))), ((int)(((byte)(40))))); + this.uiButton1.FillHoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(139)))), ((int)(((byte)(203)))), ((int)(((byte)(83))))); + this.uiButton1.FillPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(152)))), ((int)(((byte)(32))))); + this.uiButton1.FillSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(152)))), ((int)(((byte)(32))))); + this.uiButton1.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.uiButton1.LightColor = System.Drawing.Color.FromArgb(((int)(((byte)(245)))), ((int)(((byte)(251)))), ((int)(((byte)(241))))); + this.uiButton1.Location = new System.Drawing.Point(78, 273); + this.uiButton1.MinimumSize = new System.Drawing.Size(1, 1); + this.uiButton1.Name = "uiButton1"; + this.uiButton1.RectColor = System.Drawing.Color.FromArgb(((int)(((byte)(110)))), ((int)(((byte)(190)))), ((int)(((byte)(40))))); + this.uiButton1.RectHoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(139)))), ((int)(((byte)(203)))), ((int)(((byte)(83))))); + this.uiButton1.RectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(152)))), ((int)(((byte)(32))))); + this.uiButton1.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(152)))), ((int)(((byte)(32))))); + this.uiButton1.Size = new System.Drawing.Size(75, 35); + this.uiButton1.Style = Sunny.UI.UIStyle.Custom; + this.uiButton1.TabIndex = 80; + this.uiButton1.Text = "切换"; + this.uiButton1.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.uiButton1.Click += new System.EventHandler(this.uiButton1_Click); + // + // uiButton2 + // + this.uiButton2.Cursor = System.Windows.Forms.Cursors.Hand; + this.uiButton2.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(220)))), ((int)(((byte)(155)))), ((int)(((byte)(40))))); + this.uiButton2.FillColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(220)))), ((int)(((byte)(155)))), ((int)(((byte)(40))))); + this.uiButton2.FillHoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(227)))), ((int)(((byte)(175)))), ((int)(((byte)(83))))); + this.uiButton2.FillPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(176)))), ((int)(((byte)(124)))), ((int)(((byte)(32))))); + this.uiButton2.FillSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(176)))), ((int)(((byte)(124)))), ((int)(((byte)(32))))); + this.uiButton2.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.uiButton2.LightColor = System.Drawing.Color.FromArgb(((int)(((byte)(253)))), ((int)(((byte)(249)))), ((int)(((byte)(241))))); + this.uiButton2.Location = new System.Drawing.Point(159, 273); + this.uiButton2.MinimumSize = new System.Drawing.Size(1, 1); + this.uiButton2.Name = "uiButton2"; + this.uiButton2.RectColor = System.Drawing.Color.FromArgb(((int)(((byte)(220)))), ((int)(((byte)(155)))), ((int)(((byte)(40))))); + this.uiButton2.RectHoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(227)))), ((int)(((byte)(175)))), ((int)(((byte)(83))))); + this.uiButton2.RectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(176)))), ((int)(((byte)(124)))), ((int)(((byte)(32))))); + this.uiButton2.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(176)))), ((int)(((byte)(124)))), ((int)(((byte)(32))))); + this.uiButton2.Size = new System.Drawing.Size(75, 35); + this.uiButton2.Style = Sunny.UI.UIStyle.Custom; + this.uiButton2.TabIndex = 81; + this.uiButton2.Text = "切换"; + this.uiButton2.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.uiButton2.Click += new System.EventHandler(this.uiButton2_Click); + // + // uiButton3 + // + this.uiButton3.Cursor = System.Windows.Forms.Cursors.Hand; + this.uiButton3.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(230)))), ((int)(((byte)(80)))), ((int)(((byte)(80))))); + this.uiButton3.FillColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(230)))), ((int)(((byte)(80)))), ((int)(((byte)(80))))); + this.uiButton3.FillHoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(115)))), ((int)(((byte)(115))))); + this.uiButton3.FillPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(184)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.uiButton3.FillSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(184)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.uiButton3.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.uiButton3.LightColor = System.Drawing.Color.FromArgb(((int)(((byte)(253)))), ((int)(((byte)(243)))), ((int)(((byte)(243))))); + this.uiButton3.Location = new System.Drawing.Point(240, 273); + this.uiButton3.MinimumSize = new System.Drawing.Size(1, 1); + this.uiButton3.Name = "uiButton3"; + this.uiButton3.RectColor = System.Drawing.Color.FromArgb(((int)(((byte)(230)))), ((int)(((byte)(80)))), ((int)(((byte)(80))))); + this.uiButton3.RectHoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(115)))), ((int)(((byte)(115))))); + this.uiButton3.RectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(184)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.uiButton3.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(184)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.uiButton3.Size = new System.Drawing.Size(75, 35); + this.uiButton3.Style = Sunny.UI.UIStyle.Custom; + this.uiButton3.TabIndex = 82; + this.uiButton3.Text = "切换"; + this.uiButton3.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.uiButton3.Click += new System.EventHandler(this.uiButton3_Click); + // // FLight // this.AllowShowTitle = true; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; this.ClientSize = new System.Drawing.Size(800, 450); + this.Controls.Add(this.uiButton3); + this.Controls.Add(this.uiButton2); + this.Controls.Add(this.uiButton1); + this.Controls.Add(this.uiLine1); + this.Controls.Add(this.uiStatusBox1); this.Controls.Add(this.uiLight5); this.Controls.Add(this.uiLight6); this.Controls.Add(this.uiLedBulb5); @@ -247,6 +359,7 @@ namespace Sunny.UI.Demo this.ShowTitle = true; this.Symbol = 362751; this.Text = "Light"; + ((System.ComponentModel.ISupportInitialize)(this.uiStatusBox1)).EndInit(); this.ResumeLayout(false); } @@ -267,5 +380,10 @@ namespace Sunny.UI.Demo private UILedBulb uiLedBulb6; private UILight uiLight5; private UILight uiLight6; + private UIStatusBox uiStatusBox1; + private UILine uiLine1; + private UIButton uiButton1; + private UIButton uiButton2; + private UIButton uiButton3; } } \ No newline at end of file diff --git a/SunnyUI.Demo/Industrial/FLight.cs b/SunnyUI.Demo/Industrial/FLight.cs index cbcc584c..3fc37624 100644 --- a/SunnyUI.Demo/Industrial/FLight.cs +++ b/SunnyUI.Demo/Industrial/FLight.cs @@ -6,5 +6,27 @@ { InitializeComponent(); } + + public enum LightState + { + Green = 1, + Yellow = 2, + Red = 3 + } + + private void uiButton1_Click(object sender, System.EventArgs e) + { + uiStatusBox1.Status = (int)LightState.Green; + } + + private void uiButton2_Click(object sender, System.EventArgs e) + { + uiStatusBox1.Status = (int)LightState.Yellow; + } + + private void uiButton3_Click(object sender, System.EventArgs e) + { + uiStatusBox1.Status = (int)LightState.Red; + } } } diff --git a/SunnyUI.Demo/Properties/Resources.Designer.cs b/SunnyUI.Demo/Properties/Resources.Designer.cs index 21069752..2aa1ddcf 100644 --- a/SunnyUI.Demo/Properties/Resources.Designer.cs +++ b/SunnyUI.Demo/Properties/Resources.Designer.cs @@ -470,6 +470,36 @@ namespace Sunny.UI.Demo.Properties { } } + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap led_g { + get { + object obj = ResourceManager.GetObject("led_g", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap led_r { + get { + object obj = ResourceManager.GetObject("led_r", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap led_y { + get { + object obj = ResourceManager.GetObject("led_y", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// 查找 System.Drawing.Bitmap 类型的本地化资源。 /// diff --git a/SunnyUI.Demo/Properties/Resources.resx b/SunnyUI.Demo/Properties/Resources.resx index 048eb00e..be9aae64 100644 --- a/SunnyUI.Demo/Properties/Resources.resx +++ b/SunnyUI.Demo/Properties/Resources.resx @@ -214,6 +214,15 @@ ..\Resources\lazio.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\led_g.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\led_r.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\led_y.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\Resources\mallorca.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a diff --git a/SunnyUI.Demo/Resources/led_g.png b/SunnyUI.Demo/Resources/led_g.png new file mode 100644 index 0000000000000000000000000000000000000000..f644a0966289ccfe4e16915885dac215d25ff470 GIT binary patch literal 2693 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 literal 0 HcmV?d00001 diff --git a/SunnyUI.Demo/Resources/led_r.png b/SunnyUI.Demo/Resources/led_r.png new file mode 100644 index 0000000000000000000000000000000000000000..dbb24bf32a31e0a5698e0afb305e851105975cf6 GIT binary patch literal 64249 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

4UlXn z1w*?a|2hi6ffuyMxM33+fBa*d2w)t^zcVWCk^?U!n9VMyTa#Iq*N>M?#gQtDcW$q45Pt-%@gz zY%V&*iBp6=A>!ISf=6NrYA$>$8y+*{Q;i#Ob4jS8%Ln;YmEO_*?#MbZB5_R_7(LCS z;n&lThcV%`!9fyT;(c_oJ|T!J5rCf!lB*=dc{E~N8UoWBkNdL#r~N;gfQ-1$lF3=}t zjj@OeVd7{FBu3HCk&9g+0^*?h9}$cUHWpi56rA86(VrStGWQ>Hs~;qi1O(A$6Y>h% zE%!JoY@$U#kaRs3H|gcBBSDQROnMBMpS%CK>6E})*dy*R#)6CH1>A4P9UlH4jrMDV zFL0r7WJQ$CO~P~`Co@flH#eBTI)WxFI#+T7D+nUW<|1N>YiKhK)D8DKff3=rDzt*8 zv?14#1PUY1w<6+!i)TfPM*-pV3_8)De-c7xyYLY1sY*_#@E7xK~8N z(;~|!;(oG!T)Zl7l@>Q!CopRim~!JM?V9s&NUVXl^Cp)rnLrBzA`!tr6})A#NW%D= zV9CN)hQ$N;>VNuaORS1M$8q;qR77#rg1F3_{uBP~5yqK(8q)9^F>K_Euxd2r5ZAEL z?7_eBr*|5`E0wf35wYWlsFaTD+$hD>zlM*d+i}CjJ;Ox&n8>()#H_Rb0yMCp{49aa z1EiXuYr)MR$P*(H$C67POLRaq`GId`bMO-xfoq*iM1dz8B8Vhv_iv9xi+FncV~Ebs z8^LvjDaIvBar%%*kpd(`CJtgf{S%r%vAN(Fh=nLNwnd=(Qo+Q|A*ro|{72b%iy+RV z9O5KYMug6}a)S*>b&P*ybIlzICrBgly~a4;%fJN^H-Y)zwA6;uI7z_Sxa|x@IFh23 zlEiKBP#gXGkc3uLP;w^~L1ZlO!z-a3BTQ+ok!AvXKN=C9=upgh)Y$tlA!%X_X@JfO zqVHe=yhzbIhx$X>@#L)|0kYsy(8LG|m+Su&2`aSnp++22mRnZ~x1AIzb?x-1C$HrH z(KLl7_oPBd%ZRuiGa`760hqGnITC24O0h5%Ymk>Yq+^>FK4i>7#jYze{I6_ax*!#F zten4fM2RoiOk!H}knpISpV}0*w**C7^6V5e`Cl7P*f` zNlf9Y#^_T6$R@#p5nNs2`E&ar!6TDshydQdj>O$rXJtebiJa_>;6A`(#%Y2OK~CGh z8KE@f6hWc^E=|H{Hm7p`nU9+yK98fBrRvfGoc@gfy0M0TfY4LB5xYnMlPhlZP4t220hej`OjwkLl8yqg(_tFryy>u!0ji3gj$tAZ{Pfa1f&6? zNN+C_;3WaC_H=^CB61Td4c>uF3O)T|M1N(e$m*g1BU}a0q+;M{^7? z8ty$JPYxd~0YCd6g6KF%FJ^IQa`q=cV*ZC9b{dEu*FupX<1)>{>xf&rDL$gH0>j&=^bfvnKEsH{RcJw5JW-(lw9M^0z#AoLWul=Kq5e;Nv?{EFTmOhts{JO z;v>=Ck3@m54q;HHxqAXm1i{Ox zj#gov(bEZnWKZWh8bv0MrU$D1$B5`(gF`Dz;Mxh8+Wdk9(c6P+3!xFlO#;S0zaW_T zTvkF8G=OOOi20wj{DKPY*5nf;PFiuJ9t;UC8uxMM?g_6ppP&E;8;~OXLfE$4$&|pO zam57*2(ZT!nPXbSx{z5!zn}zGHn+D@GDfbLVE`bqs^QX;g(TsM^-tgw$(LXe^s~Y_ z?D+-ZXLFM;_o$GBB8c;^qx^zm`8shiFIONWQg{N}LOilkU&Ua)3S~UV=>Tq5u{*56{bxn@imwqgHUo2_5j6j z;%;Cn*)>75@IPxj%E=ZIS|ju*+Rt(-dGzY_FNn<5$%68Fj!`-U22FCj@Parzpr2Em z2Qr1fU1&kE5JD2Yp7H&4Ie{=M-=m3jM87#v^uY}w39#znzn-EaL58PMmn`3yR^86rj`W8&+Zhdo7=!Sd<-fLa;O_j!GmH z6}74-FG!JK(M>#mE_Ubr)6ZJ&yMb`~S{Ij(|EZDEwL?};R(6N1uBl#DdiT!JE;&w@ z^k{ZYR=4bvKbMo4k&)WCTP8mb=VWGesfDBZkM~ZJ8~a)7rqS%IPTgalC-2Ii6j}T? z@2e;OIR97g{_n4z{Nwyz{rj6Ox@6|mVxPwblke@5z7_42nUU&db;|12tZO(uT8qXT z0y@k8cK&bNmDwxWskN7h&a#C@MB#YsJNbWb+ArSyZ(ls=2YFx2oj5O=o!%|8YfPEq z2f6Py^+L5Su94C!6~C}^G$(x0oWP}EHN`)4PF-p6A#Qd9gx=hPL~gs<0g z>hh(g_=nD^E3OG&ujka|OHJ_)ol{p_6TV*0smqs|;vYJvuDB+Ay`EE-FEzzKbWUAy zP562}r!HS=iht;wy5gGf^?FWSzSI=|&^dL*HR0>^oVt9eDgL2z>WXW^*XucT`BGE- zL+8{L*MzUvbL#S?ruc`>sVlAtU$5uX?jre7*js zx-PC!yBDnfj?tX*(Jqmi6?#^vUF))e^VTFKC6!OF+q7X)QlH96Ne>N5ID?{^PJ|rHbf@eGwR+}y+0ke<*#p#Zd{T*`_pZa zC38Q1eAI(`FZ=$go6B52V{r2)=T~}mcIhXlzxd>JSH3+YaQ~4nuX^&Sv7ue=l_Q>i zvfS{ey=N{N(z5cE!>5mbbob!l8`}=M`SW(8Q%3EZKl$k9zOUBW+yC=XE5?jJxS`{| z{)_e;S@hSyZ_6D&{M>|VGls5w|Blt&J63V4RQkF>j~8Z?Dsg*-b@xsDY{K9>tBqY) zdDoTozNpt{?aUU-{#T;jyyD}w-S_9T60aY;d|Y_c6E9vkDO{z}@>ka1Uir@v%N}2* zC99R>MfK~x)8f}jmET=4v$k}1<2SSF9_cu7K!xn>I}TL;sQIm1pF4EP8?&p{-&1Gm z|1$5(Xk53?eHqhoGTSJ|(BoUa`6m0NTMieWUwi+rRolMPZd?0Xi!_)}yxL={>vq^N zam>sc#;w0|Y}uz)&bqkO{QZk7^@_Z-eZmdPR&-a#ef!}20lQZZs~m1&HShg#!%7)N z)AkP8x^9uTt=Yg|KCROCo0XlONSWDg_==skZ0>XA{R>wPF5hF_8x`)FHtB`^`mek8 zRq9)+>9=nW+z+p1M3wg?^lwMf6MKQx`VYS);b z#_Sp5rEYstIez@z+AZgA?(y_*vu3n>>7no)y^drZ{$tSMPd5!bSoztHA00g{@<2wl zPj+9K*7vb*?j8~z_Uyv?o9~Oh(c`hVSKQgw?m2$z*RSl|{Pv^Aj_vt)NdI1A$1k7P zVD-YE`m|lWVB;@`wj7wPT)4Vb^x!Ky-uvz2k4I12+Oyn%!ON!foque1waG_6IMiX< zfYN(<-rVx35&N!uqSQ-Oi~p|8T;E}J2d#tg^ko&Rt+;yrf?ngN^zHJ)>J_y!R=m1@ z!wt_qf9LHx4(9YuT7GPv`}{WJ;$ikje;up(Q~&SgPPo16|EfKjrS$&lzRiDrx3fc~ z;;)7V9iF>s$xq*IS#hxD(abh8THKjAv-qppGZU*cnA@h)v`vjR-@9Yw!2ZMLr!D<@ z;DAn(Q|`NJL9xhyVU>=()_4D>GZv58JN%xzJAAlf+JQ;?Z~yRdci7#je=7I1X}G!H z51AWYpAuUC(1@2ZpZ}rfIBn9Goj=;GyxpdM+v_7OKbOb$8Ta;+)h4{~&4w$#KXzZ6 zY_meoN)uN+zw!6(6W6~rY10e!i!Xa|%8^n(l)53UTlnFt%k`hozT7cw%2)0G_~fN> zO&j0PecjFDpK8~A;*4unzxZ{BO7--~8BaIgdh7lds=mG2r;l?XB)!+-vHquhwhR_h7r;#rDiy_WHqkX&-dmq0}4u zY^9m2I+T9+k>SO*KJ#9QJBEjvm`C<>d~02+%!xnVw&;W37R`OE+w7Zm-B)kHoKAOq zUGMIGR~EguPqlU5ypvw_u@P70tlL%ncuIKRt;HYi^J-|}stOI8HXWfo*tBQUC)a%( z{Jzod3J;E1(80JTvhYUv!q;m3bwl;*tG;$;&nn98{qDWso?4&IT=D3PapOvkylG#F z_7h)RH(|ol&und!{9xOe(^vIPy6KS?<2r=izvzw|KX7M^uk_o2^VWC0=+Ug^RX=^@ z`12o)i1amEt?JYBv76iP*f{B~#uGOv_1e5%an`6^&p*DWrQV?AoZ&YQl<#VDeTCP$ zEgk%Bv%&9oJ^X#>Q1xm@rh2OzbbowI$v*eCt?=r)de>jFvFz;gN?o({iI+Q$UORkd z`#0Y2P){kdeC^f|pKu#JG3dg}OP5ZYzI15GqxbfiqHma@ANk0c_}vxbwrx&V z+P*V(UZ*B+PFiwh)&O(%x{NRNq0da8cKwKl(;f~yT%_uPam^nYbZzMiD)cV7y?6O) z7a!>z%9^lhMYo~7%copCw#@~NA6V1Ar}RMOE{`v}>WXFekKKF0wyPF)Rd?-9X+6K! z)Ee?g?V0jpht+La#wtDXk#-^Jx$}DtzUGz++vTxC9=UDw_R^1xc;t?&&aXfDt*_IL z?3+9K(KaK7?Taqkcl7!nm$%z_UX`nRIKxYhyrboXZ$8^R()zL60_R2Uxbd-34|q!} zlyvQKSJ{KM{%>=;;a^|3rp>q+_q18L_~>i$rMEn}DtknOEj?aJnLD(>AMad$k(#}- zTez;negN5J=f3fSlhUL z#omWMs@S;Qn~Ne_8dZAr>EBY6qk~t-=7x7msb4KxK2v>R*N%t#d={1}Jzrd|chRb) zMY@z%(+1bA^l{ymy*u^q{NxWG)_SMQ;xWg*FY-f=pN3>C-&pfgbL+j~=i5i#dHKyX z8{BTAE8fs_%j`$rK2kFK=)q=X9=x_f>s@?*(iIm7O@-<;f~<(Dh67u?;b>WW>F zYdh}gICyQDT^rBe*JawoNnOH+USD|iq^aA6R;**bzu@jC_Ex*HN{>nlzsqR+Snr|s ztM~tP(Von4E$7tBlG@c=F?+5@cHbt??fS!-(er*+@4sQtYrBs;vGTtE4X$}`P0tn2?%1$vb>qsNuP+-NIeF&5 zKa|7s*X=5$Uia8ld${rFKR#K|;PvId7hm?-y_M=MUwdfdXYF=e ze0cTULqDpu@V?QrZoc{1(kqvh{-}a<(U>lC8`piH^_<{ubr-Lz@=E8eKki)AV8e^8 zdex~ra%`ieIS+W5e;&VL+WP4OUQ>VCJ#UX&tHK=_ofht^sU0d?;oWx{^w@Fv`stsx zv!v>%*@E z4~<YYO~Dvp{zqD_|y4Yn=G+*WiAH1UB zvGI4-Y1^miuU4P+bskz`l<7Km&y#O_R{!SZzs;yO_pvA5czIICD<*&WP5mw2$Q>20 z>FKO4KEG`D_1k{>`p~88t86{E;)yrQtRDB<;FXWp?-5wtw8ia4*9Jw@1}z?+ckf@l zKZr~iU2E1w%LY_9oVB9)xV?kMmQ}wBn_D`*d2O}YDYNRnbMvk%)uU6FP1Wao{orSB oT=Go%)Xq<|UNY*h>yy^~J}7zm&qa^pFDBIsHu7Ezw0q?L0e~n1asU7T literal 0 HcmV?d00001 diff --git a/SunnyUI.Demo/Resources/led_y.png b/SunnyUI.Demo/Resources/led_y.png new file mode 100644 index 0000000000000000000000000000000000000000..4da08ded8dd684cb7eea99cbc5eceef43bf7bf1d GIT binary patch literal 2517 zcmV;`2`cu9P)L(;>axb^+#-srvUja+os;rsTO>k}@!+053tgh|MR+}d9m z<{~kHgrq{!Lz3NXX2)*-$PM-X8_1!<_pCSkh|GV>oUr<#ErGglPraO{5ZRTV(rzq2PEN>Qo8hKz+c>QaDVkvfgCz~^hU$J zB3DN;%!Da$Wq6!R%P%m!aXX{IkH~tnm>Mu=IR7-nd9pQoiRBni`h;Yb?uK1-r?zt9 z7HA8{`fJ@Z2Vm;bg^Y1(vq3& z|CIw*J_n$SsnMt8Y|#Wnql9;LzrZ!`yq=v0|BCq^J<4k@d=*zD7SBR;nx=l95Ee=M z(4CI-)<&jg3OZ8-rh;>)p628??_zG_6zfiY5~G@cFkI?~pd(-X_A}W^M(#R%-)?jJ zu1r12FeU8Pqg?y;4p-cGH?KYSkF44BE@TZ)-oK5kpVIALj)p@GnDNssX6~ro1 z6%b1($IjA%Gd0tvzy2yto!vma_m2rlip-Zwb--lb3IKB5Az8LeQois!SM43LY0s}S zIP>pxXSVU$iN8YuX6AMfl9Y7K9Ofyp$SHlA22sZjby?$KL|GP~$P}S=|?U%3Pg>U`|;&eEUW1YsWR6+8j6MWmV#y3kFit4LGTj1z&U zlg^9ORRLLKSVWrWB(?zOP7pR<4J)Lm_eo~gN%D5PI_sB4mM(c1cq307)kjD^P%V=3&g5mRDLJ z*9A#?+YGgwvDQvAntzt2hQw3G3nxhW;N7*P-41C6NhcxAI(WxXXg6M6ITnOjO;eAd z3RGoH2q~o(m`AXPnZt$eA!GGy+8bngi_A=uiQ2cbSW_|{g6S1{eF$NyWyb&(L`VXj z1wtpmLuiXoRUoJ%cv<2B+(i`}1#p49J>TS~+AVBa=9SBWWHXW`K%7hiphoTlFK8T0 zv}0eOV8{as!b3ovNk0@db#1sq^nj^uug5V1bC95pkvJ@o8RkYXL$aB0F+DAjRmG6T z7cq+<+MAfK;=V|2))G*&dO)<-G?Qhsx@`!rF`%iS%%K`PG^|j)*~&cA1xbx06hzTX zG0vSThpKSu3hFqbX)2mp)G>t`Vid7%sK-?sWld9wx_0X5)KSE;peoK&f`L2jpHwp)@JM%CGdS1*!B@Z1R=DMEpVvy`EWhYn>pk8BN)QHNx*O-ssR zfpR<|=3R=spvp&-V~7=$6A-Zi>t2EfZ-tW?l1>Mio|1G>F3B45YzInCU`sF4)R8JW zp@@`YTE4aCXYR3%geRAVSd1;q%89P*_u<3StwVwYm*lsOcmf;fhDQ(i z5$hBW?KyzDhFC@FaY0o;F@kag`OxtIO#|8V6%2;2GQD+wO9y6{)L`~C-FfQ=#<)Ky zStU6^4X2X#)1A8pOPo5kGddqS<0Tl6CNU@&4@TsJ5#!}pEXaqnvDjW05{PBW%q0gX zhUe++|8wM>2^|QTeaYaQ09^XCxr$aN7}eBvUK(6MZ|xK@I(6kFS)?30`2vhCz-VwW zhRgpKU^EZ;d|T3xLXkVuTlbK3HnLFeVCwSgaSyGqZowRJsZI9nAGzT~Fx~I2*otMi zaM^8~8@~-RCm%Xxk&jZ^!2D3qR9miATP3a*w+{F4@hJ)=4tA6{9rq#S>tY z?3h{M(nDt44SeVATl>w={C#Bkc=U-EJxTmJNjC*)pGn(HHXB-nH*eBunU0(6>yo~< f`;z_}{!sHjh);E&EXBp%00000NkvXXu0mjf0&~uc literal 0 HcmV?d00001 diff --git a/SunnyUI.Demo/SunnyUI.Demo.csproj b/SunnyUI.Demo/SunnyUI.Demo.csproj index 824a7f6e..bf2c70d4 100644 --- a/SunnyUI.Demo/SunnyUI.Demo.csproj +++ b/SunnyUI.Demo/SunnyUI.Demo.csproj @@ -775,6 +775,9 @@ + + +