diff --git a/SunnyUI.Demo/Bin/SunnyUI.Common.dll b/SunnyUI.Demo/Bin/SunnyUI.Common.dll
deleted file mode 100644
index 8bf46663..00000000
Binary files a/SunnyUI.Demo/Bin/SunnyUI.Common.dll and /dev/null differ
diff --git a/SunnyUI.Demo/Bin/SunnyUI.Demo.exe b/SunnyUI.Demo/Bin/SunnyUI.Demo.exe
deleted file mode 100644
index adcb8480..00000000
Binary files a/SunnyUI.Demo/Bin/SunnyUI.Demo.exe and /dev/null differ
diff --git a/SunnyUI.Demo/Bin/SunnyUI.Demo.exe.config b/SunnyUI.Demo/Bin/SunnyUI.Demo.exe.config
deleted file mode 100644
index 312bb3f2..00000000
--- a/SunnyUI.Demo/Bin/SunnyUI.Demo.exe.config
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/SunnyUI.Demo/Bin/SunnyUI.dll b/SunnyUI.Demo/Bin/SunnyUI.dll
deleted file mode 100644
index 78552f9b..00000000
Binary files a/SunnyUI.Demo/Bin/SunnyUI.dll and /dev/null differ
diff --git a/SunnyUI.Demo/Controls/FButton.Designer.cs b/SunnyUI.Demo/Controls/FButton.Designer.cs
index f10a5a09..baa9cada 100644
--- a/SunnyUI.Demo/Controls/FButton.Designer.cs
+++ b/SunnyUI.Demo/Controls/FButton.Designer.cs
@@ -217,7 +217,9 @@ namespace Sunny.UI.Demo
//
// uiLine5
//
+ this.uiLine5.BackColor = System.Drawing.Color.Transparent;
this.uiLine5.Font = new System.Drawing.Font("宋体", 12F);
+ this.uiLine5.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiLine5.Location = new System.Drawing.Point(388, 397);
this.uiLine5.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine5.Name = "uiLine5";
@@ -239,7 +241,9 @@ namespace Sunny.UI.Demo
//
// uiLine4
//
+ this.uiLine4.BackColor = System.Drawing.Color.Transparent;
this.uiLine4.Font = new System.Drawing.Font("宋体", 12F);
+ this.uiLine4.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiLine4.Location = new System.Drawing.Point(30, 397);
this.uiLine4.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine4.Name = "uiLine4";
@@ -422,7 +426,9 @@ namespace Sunny.UI.Demo
//
// uiLine3
//
+ this.uiLine3.BackColor = System.Drawing.Color.Transparent;
this.uiLine3.Font = new System.Drawing.Font("宋体", 12F);
+ this.uiLine3.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiLine3.Location = new System.Drawing.Point(30, 315);
this.uiLine3.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine3.Name = "uiLine3";
@@ -449,7 +455,7 @@ namespace Sunny.UI.Demo
this.uiSymbolButton7.RectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(184)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
this.uiSymbolButton7.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(184)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
this.uiSymbolButton7.Size = new System.Drawing.Size(35, 35);
- this.uiSymbolButton7.Style = Sunny.UI.UIStyle.Red;
+ this.uiSymbolButton7.Style = Sunny.UI.UIStyle.Custom;
this.uiSymbolButton7.StyleCustomMode = true;
this.uiSymbolButton7.Symbol = 61809;
this.uiSymbolButton7.TabIndex = 90;
@@ -473,7 +479,7 @@ namespace Sunny.UI.Demo
this.uiSymbolButton8.RectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(176)))), ((int)(((byte)(124)))), ((int)(((byte)(32)))));
this.uiSymbolButton8.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(176)))), ((int)(((byte)(124)))), ((int)(((byte)(32)))));
this.uiSymbolButton8.Size = new System.Drawing.Size(35, 35);
- this.uiSymbolButton8.Style = Sunny.UI.UIStyle.Orange;
+ this.uiSymbolButton8.Style = Sunny.UI.UIStyle.Custom;
this.uiSymbolButton8.StyleCustomMode = true;
this.uiSymbolButton8.Symbol = 61445;
this.uiSymbolButton8.TabIndex = 89;
@@ -497,7 +503,7 @@ namespace Sunny.UI.Demo
this.uiSymbolButton9.RectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(152)))), ((int)(((byte)(32)))));
this.uiSymbolButton9.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(152)))), ((int)(((byte)(32)))));
this.uiSymbolButton9.Size = new System.Drawing.Size(35, 35);
- this.uiSymbolButton9.Style = Sunny.UI.UIStyle.Green;
+ this.uiSymbolButton9.Style = Sunny.UI.UIStyle.Custom;
this.uiSymbolButton9.StyleCustomMode = true;
this.uiSymbolButton9.Symbol = 57607;
this.uiSymbolButton9.TabIndex = 88;
@@ -535,7 +541,7 @@ namespace Sunny.UI.Demo
this.uiSymbolButton11.RectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(184)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
this.uiSymbolButton11.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(184)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
this.uiSymbolButton11.Size = new System.Drawing.Size(35, 35);
- this.uiSymbolButton11.Style = Sunny.UI.UIStyle.Red;
+ this.uiSymbolButton11.Style = Sunny.UI.UIStyle.Custom;
this.uiSymbolButton11.StyleCustomMode = true;
this.uiSymbolButton11.Symbol = 61508;
this.uiSymbolButton11.TabIndex = 86;
@@ -578,7 +584,7 @@ namespace Sunny.UI.Demo
this.uiSymbolButton6.RectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(184)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
this.uiSymbolButton6.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(184)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
this.uiSymbolButton6.Size = new System.Drawing.Size(100, 35);
- this.uiSymbolButton6.Style = Sunny.UI.UIStyle.Red;
+ this.uiSymbolButton6.Style = Sunny.UI.UIStyle.Custom;
this.uiSymbolButton6.StyleCustomMode = true;
this.uiSymbolButton6.Symbol = 61532;
this.uiSymbolButton6.TabIndex = 84;
@@ -602,7 +608,7 @@ namespace Sunny.UI.Demo
this.uiSymbolButton5.RectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(176)))), ((int)(((byte)(124)))), ((int)(((byte)(32)))));
this.uiSymbolButton5.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(176)))), ((int)(((byte)(124)))), ((int)(((byte)(32)))));
this.uiSymbolButton5.Size = new System.Drawing.Size(100, 35);
- this.uiSymbolButton5.Style = Sunny.UI.UIStyle.Orange;
+ this.uiSymbolButton5.Style = Sunny.UI.UIStyle.Custom;
this.uiSymbolButton5.StyleCustomMode = true;
this.uiSymbolButton5.Symbol = 61553;
this.uiSymbolButton5.TabIndex = 83;
@@ -626,7 +632,7 @@ namespace Sunny.UI.Demo
this.uiSymbolButton3.RectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(152)))), ((int)(((byte)(32)))));
this.uiSymbolButton3.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(152)))), ((int)(((byte)(32)))));
this.uiSymbolButton3.Size = new System.Drawing.Size(100, 35);
- this.uiSymbolButton3.Style = Sunny.UI.UIStyle.Green;
+ this.uiSymbolButton3.Style = Sunny.UI.UIStyle.Custom;
this.uiSymbolButton3.StyleCustomMode = true;
this.uiSymbolButton3.Symbol = 61530;
this.uiSymbolButton3.TabIndex = 82;
@@ -665,7 +671,7 @@ namespace Sunny.UI.Demo
this.uiSymbolButton2.RectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(184)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
this.uiSymbolButton2.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(184)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
this.uiSymbolButton2.Size = new System.Drawing.Size(100, 35);
- this.uiSymbolButton2.Style = Sunny.UI.UIStyle.Red;
+ this.uiSymbolButton2.Style = Sunny.UI.UIStyle.Custom;
this.uiSymbolButton2.StyleCustomMode = true;
this.uiSymbolButton2.Symbol = 61453;
this.uiSymbolButton2.TabIndex = 80;
@@ -688,7 +694,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, 185);
this.uiLine2.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine2.Name = "uiLine2";
@@ -699,7 +707,9 @@ namespace Sunny.UI.Demo
//
// 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, 55);
this.uiLine1.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine1.Name = "uiLine1";
@@ -726,7 +736,7 @@ namespace Sunny.UI.Demo
this.uiButton13.RectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(184)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
this.uiButton13.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(184)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
this.uiButton13.Size = new System.Drawing.Size(100, 35);
- this.uiButton13.Style = Sunny.UI.UIStyle.Red;
+ this.uiButton13.Style = Sunny.UI.UIStyle.Custom;
this.uiButton13.StyleCustomMode = true;
this.uiButton13.TabIndex = 76;
this.uiButton13.Text = "Red";
@@ -750,7 +760,7 @@ namespace Sunny.UI.Demo
this.uiButton14.RectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(176)))), ((int)(((byte)(124)))), ((int)(((byte)(32)))));
this.uiButton14.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(176)))), ((int)(((byte)(124)))), ((int)(((byte)(32)))));
this.uiButton14.Size = new System.Drawing.Size(100, 35);
- this.uiButton14.Style = Sunny.UI.UIStyle.Orange;
+ this.uiButton14.Style = Sunny.UI.UIStyle.Custom;
this.uiButton14.StyleCustomMode = true;
this.uiButton14.TabIndex = 75;
this.uiButton14.Text = "Orange";
@@ -774,7 +784,7 @@ namespace Sunny.UI.Demo
this.uiButton15.RectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(112)))), ((int)(((byte)(112)))), ((int)(((byte)(112)))));
this.uiButton15.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(112)))), ((int)(((byte)(112)))), ((int)(((byte)(112)))));
this.uiButton15.Size = new System.Drawing.Size(100, 35);
- this.uiButton15.Style = Sunny.UI.UIStyle.Gray;
+ this.uiButton15.Style = Sunny.UI.UIStyle.Custom;
this.uiButton15.StyleCustomMode = true;
this.uiButton15.TabIndex = 74;
this.uiButton15.Text = "Gray";
@@ -798,7 +808,7 @@ namespace Sunny.UI.Demo
this.uiButton16.RectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(152)))), ((int)(((byte)(32)))));
this.uiButton16.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(152)))), ((int)(((byte)(32)))));
this.uiButton16.Size = new System.Drawing.Size(100, 35);
- this.uiButton16.Style = Sunny.UI.UIStyle.Green;
+ this.uiButton16.Style = Sunny.UI.UIStyle.Custom;
this.uiButton16.StyleCustomMode = true;
this.uiButton16.TabIndex = 73;
this.uiButton16.Text = "Green";
@@ -813,6 +823,7 @@ namespace Sunny.UI.Demo
this.uiButton17.Name = "uiButton17";
this.uiButton17.Radius = 35;
this.uiButton17.Size = new System.Drawing.Size(100, 35);
+ this.uiButton17.Style = Sunny.UI.UIStyle.Custom;
this.uiButton17.StyleCustomMode = true;
this.uiButton17.TabIndex = 72;
this.uiButton17.Text = "Blue";
@@ -849,7 +860,7 @@ namespace Sunny.UI.Demo
this.uiButton4.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(184)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
this.uiButton4.ShowFocusLine = true;
this.uiButton4.Size = new System.Drawing.Size(100, 35);
- this.uiButton4.Style = Sunny.UI.UIStyle.Red;
+ this.uiButton4.Style = Sunny.UI.UIStyle.Custom;
this.uiButton4.StyleCustomMode = true;
this.uiButton4.TabIndex = 64;
this.uiButton4.Text = "Red";
@@ -873,7 +884,7 @@ namespace Sunny.UI.Demo
this.uiButton5.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(176)))), ((int)(((byte)(124)))), ((int)(((byte)(32)))));
this.uiButton5.ShowFocusLine = true;
this.uiButton5.Size = new System.Drawing.Size(100, 35);
- this.uiButton5.Style = Sunny.UI.UIStyle.Orange;
+ this.uiButton5.Style = Sunny.UI.UIStyle.Custom;
this.uiButton5.StyleCustomMode = true;
this.uiButton5.TabIndex = 63;
this.uiButton5.Text = "Orange";
@@ -897,7 +908,7 @@ namespace Sunny.UI.Demo
this.uiButton6.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(112)))), ((int)(((byte)(112)))), ((int)(((byte)(112)))));
this.uiButton6.ShowFocusLine = true;
this.uiButton6.Size = new System.Drawing.Size(100, 35);
- this.uiButton6.Style = Sunny.UI.UIStyle.Gray;
+ this.uiButton6.Style = Sunny.UI.UIStyle.Custom;
this.uiButton6.StyleCustomMode = true;
this.uiButton6.TabIndex = 62;
this.uiButton6.Text = "Gray";
@@ -921,7 +932,7 @@ namespace Sunny.UI.Demo
this.uiButton3.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(152)))), ((int)(((byte)(32)))));
this.uiButton3.ShowFocusLine = true;
this.uiButton3.Size = new System.Drawing.Size(100, 35);
- this.uiButton3.Style = Sunny.UI.UIStyle.Green;
+ this.uiButton3.Style = Sunny.UI.UIStyle.Custom;
this.uiButton3.StyleCustomMode = true;
this.uiButton3.TabIndex = 61;
this.uiButton3.Text = "Green";
@@ -937,6 +948,7 @@ namespace Sunny.UI.Demo
this.uiButton2.ShowFocusLine = true;
this.uiButton2.ShowTips = true;
this.uiButton2.Size = new System.Drawing.Size(100, 35);
+ this.uiButton2.Style = Sunny.UI.UIStyle.Custom;
this.uiButton2.StyleCustomMode = true;
this.uiButton2.TabIndex = 60;
this.uiButton2.Text = "Blue";
diff --git a/SunnyUI.Demo/Controls/FCheckBox.Designer.cs b/SunnyUI.Demo/Controls/FCheckBox.Designer.cs
index 5fefa705..41a8dbea 100644
--- a/SunnyUI.Demo/Controls/FCheckBox.Designer.cs
+++ b/SunnyUI.Demo/Controls/FCheckBox.Designer.cs
@@ -48,66 +48,72 @@ namespace Sunny.UI.Demo
//
this.uiButton5.Cursor = System.Windows.Forms.Cursors.Hand;
this.uiButton5.Font = new System.Drawing.Font("宋体", 12F);
- this.uiButton5.Location = new System.Drawing.Point(454, 345);
+ this.uiButton5.Location = new System.Drawing.Point(454, 366);
this.uiButton5.MinimumSize = new System.Drawing.Size(1, 1);
this.uiButton5.Name = "uiButton5";
this.uiButton5.Size = new System.Drawing.Size(100, 35);
this.uiButton5.TabIndex = 57;
this.uiButton5.Text = "清空";
+ this.uiButton5.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiButton5.Click += new System.EventHandler(this.uiButton5_Click);
//
// uiButton4
//
this.uiButton4.Cursor = System.Windows.Forms.Cursors.Hand;
this.uiButton4.Font = new System.Drawing.Font("宋体", 12F);
- this.uiButton4.Location = new System.Drawing.Point(348, 345);
+ this.uiButton4.Location = new System.Drawing.Point(348, 366);
this.uiButton4.MinimumSize = new System.Drawing.Size(1, 1);
this.uiButton4.Name = "uiButton4";
this.uiButton4.Size = new System.Drawing.Size(100, 35);
this.uiButton4.TabIndex = 56;
this.uiButton4.Text = "选择";
+ this.uiButton4.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiButton4.Click += new System.EventHandler(this.uiButton4_Click);
//
// uiButton3
//
this.uiButton3.Cursor = System.Windows.Forms.Cursors.Hand;
this.uiButton3.Font = new System.Drawing.Font("宋体", 12F);
- this.uiButton3.Location = new System.Drawing.Point(242, 345);
+ this.uiButton3.Location = new System.Drawing.Point(242, 366);
this.uiButton3.MinimumSize = new System.Drawing.Size(1, 1);
this.uiButton3.Name = "uiButton3";
this.uiButton3.Size = new System.Drawing.Size(100, 35);
this.uiButton3.TabIndex = 55;
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);
//
// uiButton2
//
this.uiButton2.Cursor = System.Windows.Forms.Cursors.Hand;
this.uiButton2.Font = new System.Drawing.Font("宋体", 12F);
- this.uiButton2.Location = new System.Drawing.Point(136, 345);
+ this.uiButton2.Location = new System.Drawing.Point(136, 366);
this.uiButton2.MinimumSize = new System.Drawing.Size(1, 1);
this.uiButton2.Name = "uiButton2";
this.uiButton2.Size = new System.Drawing.Size(100, 35);
this.uiButton2.TabIndex = 54;
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);
//
// uiButton1
//
this.uiButton1.Cursor = System.Windows.Forms.Cursors.Hand;
this.uiButton1.Font = new System.Drawing.Font("宋体", 12F);
- this.uiButton1.Location = new System.Drawing.Point(30, 345);
+ this.uiButton1.Location = new System.Drawing.Point(30, 366);
this.uiButton1.MinimumSize = new System.Drawing.Size(1, 1);
this.uiButton1.Name = "uiButton1";
this.uiButton1.Size = new System.Drawing.Size(100, 35);
this.uiButton1.TabIndex = 53;
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);
//
// uiCheckBoxGroup1
//
this.uiCheckBoxGroup1.ColumnCount = 2;
this.uiCheckBoxGroup1.Font = new System.Drawing.Font("宋体", 12F);
+ this.uiCheckBoxGroup1.HoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(220)))), ((int)(((byte)(236)))), ((int)(((byte)(255)))));
this.uiCheckBoxGroup1.Items.AddRange(new object[] {
"0",
"1",
@@ -125,16 +131,18 @@ namespace Sunny.UI.Demo
this.uiCheckBoxGroup1.MinimumSize = new System.Drawing.Size(1, 1);
this.uiCheckBoxGroup1.Name = "uiCheckBoxGroup1";
this.uiCheckBoxGroup1.Padding = new System.Windows.Forms.Padding(0, 32, 0, 0);
- this.uiCheckBoxGroup1.Size = new System.Drawing.Size(670, 211);
+ this.uiCheckBoxGroup1.SelectedIndexes = ((System.Collections.Generic.List)(resources.GetObject("uiCheckBoxGroup1.SelectedIndexes")));
+ this.uiCheckBoxGroup1.Size = new System.Drawing.Size(670, 226);
this.uiCheckBoxGroup1.TabIndex = 52;
this.uiCheckBoxGroup1.Text = "UICheckBoxGroup";
- this.uiCheckBoxGroup1.TextAlignment = System.Drawing.ContentAlignment.MiddleCenter;
+ this.uiCheckBoxGroup1.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
this.uiCheckBoxGroup1.ValueChanged += new Sunny.UI.UICheckBoxGroup.OnValueChanged(this.uiCheckBoxGroup1_ValueChanged);
//
// uiCheckBox2
//
this.uiCheckBox2.Cursor = System.Windows.Forms.Cursors.Hand;
this.uiCheckBox2.Font = new System.Drawing.Font("宋体", 12F);
+ this.uiCheckBox2.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiCheckBox2.Location = new System.Drawing.Point(192, 83);
this.uiCheckBox2.MinimumSize = new System.Drawing.Size(1, 1);
this.uiCheckBox2.Name = "uiCheckBox2";
@@ -148,6 +156,7 @@ namespace Sunny.UI.Demo
this.uiCheckBox4.Cursor = System.Windows.Forms.Cursors.Hand;
this.uiCheckBox4.Enabled = false;
this.uiCheckBox4.Font = new System.Drawing.Font("宋体", 12F);
+ this.uiCheckBox4.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiCheckBox4.Location = new System.Drawing.Point(516, 81);
this.uiCheckBox4.MinimumSize = new System.Drawing.Size(1, 1);
this.uiCheckBox4.Name = "uiCheckBox4";
@@ -162,6 +171,7 @@ namespace Sunny.UI.Demo
this.uiCheckBox3.Cursor = System.Windows.Forms.Cursors.Hand;
this.uiCheckBox3.Enabled = false;
this.uiCheckBox3.Font = new System.Drawing.Font("宋体", 12F);
+ this.uiCheckBox3.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiCheckBox3.Location = new System.Drawing.Point(354, 81);
this.uiCheckBox3.MinimumSize = new System.Drawing.Size(1, 1);
this.uiCheckBox3.Name = "uiCheckBox3";
@@ -172,7 +182,9 @@ namespace Sunny.UI.Demo
//
// 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, 55);
this.uiLine1.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine1.Name = "uiLine1";
@@ -186,6 +198,7 @@ namespace Sunny.UI.Demo
this.uiCheckBox1.Checked = true;
this.uiCheckBox1.Cursor = System.Windows.Forms.Cursors.Hand;
this.uiCheckBox1.Font = new System.Drawing.Font("宋体", 12F);
+ this.uiCheckBox1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiCheckBox1.Location = new System.Drawing.Point(30, 83);
this.uiCheckBox1.MinimumSize = new System.Drawing.Size(1, 1);
this.uiCheckBox1.Name = "uiCheckBox1";
@@ -199,12 +212,13 @@ namespace Sunny.UI.Demo
//
this.uiButton6.Cursor = System.Windows.Forms.Cursors.Hand;
this.uiButton6.Font = new System.Drawing.Font("宋体", 12F);
- this.uiButton6.Location = new System.Drawing.Point(560, 345);
+ this.uiButton6.Location = new System.Drawing.Point(560, 366);
this.uiButton6.MinimumSize = new System.Drawing.Size(1, 1);
this.uiButton6.Name = "uiButton6";
this.uiButton6.Size = new System.Drawing.Size(100, 35);
this.uiButton6.TabIndex = 58;
this.uiButton6.Text = "单选";
+ this.uiButton6.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiButton6.Click += new System.EventHandler(this.uiButton6_Click);
//
// FCheckBox
diff --git a/SunnyUI.Demo/Controls/FCheckBox.cs b/SunnyUI.Demo/Controls/FCheckBox.cs
index 8393e9c7..46e87845 100644
--- a/SunnyUI.Demo/Controls/FCheckBox.cs
+++ b/SunnyUI.Demo/Controls/FCheckBox.cs
@@ -1,6 +1,5 @@
using System;
using System.Collections.Generic;
-using System.Text;
namespace Sunny.UI.Demo
{
@@ -37,17 +36,12 @@ namespace Sunny.UI.Demo
uiCheckBoxGroup1.Clear();
}
- private void uiCheckBoxGroup1_ValueChanged(object sender, int index, string text, bool isChecked)
+ private void uiCheckBoxGroup1_ValueChanged(object sender, CheckBoxGroupEventArgs e)
{
- StringBuilder sb = new StringBuilder();
- sb.Append("SelectedIndexes: ");
- foreach (var selectedIndex in uiCheckBoxGroup1.SelectedIndexes)
- {
- sb.Append(selectedIndex);
- sb.Append(", ");
- }
-
- Console.WriteLine("SelectedIndex: " + index + ", SelectedText: " + text + "\n" + sb.ToString());
+ if (e.Index >= 0)
+ Console.WriteLine("SelectedIndex: " + e.Index + ", SelectedText: " + e.Text + ", Checked: " + e.Checked + "\n" + "SelectedIndexes: " + string.Join(", ", e.SelectedIndexes));
+ else
+ Console.WriteLine("SelectedIndexes: " + string.Join(", ", e.SelectedIndexes));
}
private void uiCheckBox1_CheckedChanged(object sender, EventArgs e)
diff --git a/SunnyUI.Demo/Controls/FCheckBox.resx b/SunnyUI.Demo/Controls/FCheckBox.resx
index 1af7de15..a9d4ffb3 100644
--- a/SunnyUI.Demo/Controls/FCheckBox.resx
+++ b/SunnyUI.Demo/Controls/FCheckBox.resx
@@ -117,4 +117,13 @@
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ AAEAAAD/////AQAAAAAAAAAMAgAAAJoBbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1u
+ ZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV0sIG1zY29ybGliLCBWZXJzaW9u
+ PTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OQUB
+ AAAAL1N5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkxpc3RgMVtbU3lzdGVtLkludDMyAwAAAAZfaXRl
+ bXMFX3NpemUIX3ZlcnNpb24HAAAICAgCAAAACQMAAAAAAAAAAAAAAA8DAAAAAAAAAAgL
+
+
\ No newline at end of file
diff --git a/SunnyUI.Demo/Controls/FDataGridView.Designer.cs b/SunnyUI.Demo/Controls/FDataGridView.Designer.cs
index f2efb254..28d72c14 100644
--- a/SunnyUI.Demo/Controls/FDataGridView.Designer.cs
+++ b/SunnyUI.Demo/Controls/FDataGridView.Designer.cs
@@ -36,12 +36,12 @@ namespace Sunny.UI.Demo
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle5 = new System.Windows.Forms.DataGridViewCellStyle();
this.uiDataGridViewFooter1 = new Sunny.UI.UIDataGridViewFooter();
this.uiDataGridView1 = new Sunny.UI.UIDataGridView();
- this.uiPagination1 = new Sunny.UI.UIPagination();
- this.backgroundWorker1 = new System.ComponentModel.BackgroundWorker();
this.Column1 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.Column2 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.Column3 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.Column4 = new System.Windows.Forms.DataGridViewTextBoxColumn();
+ this.uiPagination1 = new Sunny.UI.UIPagination();
+ this.backgroundWorker1 = new System.ComponentModel.BackgroundWorker();
((System.ComponentModel.ISupportInitialize)(this.uiDataGridView1)).BeginInit();
this.SuspendLayout();
//
@@ -113,33 +113,10 @@ namespace Sunny.UI.Demo
dataGridViewCellStyle5.SelectionForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiDataGridView1.RowsDefaultCellStyle = dataGridViewCellStyle5;
this.uiDataGridView1.RowTemplate.Height = 23;
- this.uiDataGridView1.ScrollBarRectColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(160)))), ((int)(((byte)(255)))));
this.uiDataGridView1.SelectedIndex = -1;
this.uiDataGridView1.Size = new System.Drawing.Size(800, 351);
this.uiDataGridView1.TabIndex = 6;
//
- // uiPagination1
- //
- this.uiPagination1.ActivePage = 20;
- this.uiPagination1.CausesValidation = false;
- this.uiPagination1.Dock = System.Windows.Forms.DockStyle.Bottom;
- this.uiPagination1.Font = new System.Drawing.Font("宋体", 12F);
- this.uiPagination1.Location = new System.Drawing.Point(0, 415);
- this.uiPagination1.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
- this.uiPagination1.MinimumSize = new System.Drawing.Size(1, 1);
- this.uiPagination1.Name = "uiPagination1";
- this.uiPagination1.PagerCount = 11;
- this.uiPagination1.PageSize = 50;
- this.uiPagination1.RadiusSides = Sunny.UI.UICornerRadiusSides.None;
- this.uiPagination1.RectSides = System.Windows.Forms.ToolStripStatusLabelBorderSides.None;
- this.uiPagination1.ShowText = false;
- this.uiPagination1.Size = new System.Drawing.Size(800, 35);
- this.uiPagination1.TabIndex = 4;
- this.uiPagination1.Text = "uiDataGridPage1";
- this.uiPagination1.TextAlignment = System.Drawing.ContentAlignment.MiddleCenter;
- this.uiPagination1.TotalCount = 40000;
- this.uiPagination1.PageChanged += new Sunny.UI.UIPagination.OnPageChangeEventHandler(this.uiPagination1_PageChanged);
- //
// Column1
//
this.Column1.DataPropertyName = "Column1";
@@ -168,6 +145,28 @@ namespace Sunny.UI.Demo
this.Column4.Name = "Column4";
this.Column4.Width = 200;
//
+ // uiPagination1
+ //
+ this.uiPagination1.ActivePage = 20;
+ this.uiPagination1.CausesValidation = false;
+ this.uiPagination1.Dock = System.Windows.Forms.DockStyle.Bottom;
+ this.uiPagination1.Font = new System.Drawing.Font("宋体", 12F);
+ this.uiPagination1.Location = new System.Drawing.Point(0, 415);
+ this.uiPagination1.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
+ this.uiPagination1.MinimumSize = new System.Drawing.Size(1, 1);
+ this.uiPagination1.Name = "uiPagination1";
+ this.uiPagination1.PagerCount = 11;
+ this.uiPagination1.PageSize = 50;
+ this.uiPagination1.RadiusSides = Sunny.UI.UICornerRadiusSides.None;
+ this.uiPagination1.RectSides = System.Windows.Forms.ToolStripStatusLabelBorderSides.None;
+ this.uiPagination1.ShowText = false;
+ this.uiPagination1.Size = new System.Drawing.Size(800, 35);
+ this.uiPagination1.TabIndex = 4;
+ this.uiPagination1.Text = "uiDataGridPage1";
+ this.uiPagination1.TextAlignment = System.Drawing.ContentAlignment.MiddleCenter;
+ this.uiPagination1.TotalCount = 40000;
+ this.uiPagination1.PageChanged += new Sunny.UI.UIPagination.OnPageChangeEventHandler(this.uiPagination1_PageChanged);
+ //
// FDataGridView
//
this.AllowShowTitle = true;
diff --git a/SunnyUI.Demo/Controls/FFlowLayoutPanel.cs b/SunnyUI.Demo/Controls/FFlowLayoutPanel.cs
index 3f9bd942..cd455bb4 100644
--- a/SunnyUI.Demo/Controls/FFlowLayoutPanel.cs
+++ b/SunnyUI.Demo/Controls/FFlowLayoutPanel.cs
@@ -41,6 +41,8 @@ namespace Sunny.UI.Demo
//----uiFlowLayoutPanel1.Controls.Add(btn);----
uiButton3.Enabled = true;
+
+ this.Render();
}
private void Btn_Click(object sender, System.EventArgs e)
diff --git a/SunnyUI.Demo/Controls/FListBox.Designer.cs b/SunnyUI.Demo/Controls/FListBox.Designer.cs
index 7af2709e..3de34c9c 100644
--- a/SunnyUI.Demo/Controls/FListBox.Designer.cs
+++ b/SunnyUI.Demo/Controls/FListBox.Designer.cs
@@ -47,6 +47,7 @@ namespace Sunny.UI.Demo
this.uiButton1.Size = new System.Drawing.Size(100, 35);
this.uiButton1.TabIndex = 29;
this.uiButton1.Text = "Add Item";
+ 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);
//
// uiCheckBox1
@@ -54,6 +55,7 @@ namespace Sunny.UI.Demo
this.uiCheckBox1.Checked = true;
this.uiCheckBox1.Cursor = System.Windows.Forms.Cursors.Hand;
this.uiCheckBox1.Font = new System.Drawing.Font("宋体", 12F);
+ this.uiCheckBox1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiCheckBox1.Location = new System.Drawing.Point(352, 440);
this.uiCheckBox1.MinimumSize = new System.Drawing.Size(1, 1);
this.uiCheckBox1.Name = "uiCheckBox1";
@@ -67,13 +69,14 @@ namespace Sunny.UI.Demo
//
this.uiListBox1.FillColor = System.Drawing.Color.White;
this.uiListBox1.Font = new System.Drawing.Font("宋体", 12F);
- this.uiListBox1.FormatString = "";
+ this.uiListBox1.HoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(155)))), ((int)(((byte)(200)))), ((int)(((byte)(255)))));
this.uiListBox1.ItemSelectForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(243)))), ((int)(((byte)(255)))));
this.uiListBox1.Location = new System.Drawing.Point(30, 85);
this.uiListBox1.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.uiListBox1.MinimumSize = new System.Drawing.Size(1, 1);
this.uiListBox1.Name = "uiListBox1";
this.uiListBox1.Padding = new System.Windows.Forms.Padding(2);
+ this.uiListBox1.ShowText = false;
this.uiListBox1.Size = new System.Drawing.Size(270, 343);
this.uiListBox1.TabIndex = 27;
this.uiListBox1.Text = "uiListBox1";
@@ -82,18 +85,22 @@ namespace Sunny.UI.Demo
//
// uiLine2
//
+ this.uiLine2.BackColor = System.Drawing.Color.Transparent;
this.uiLine2.Font = new System.Drawing.Font("宋体", 12F);
- this.uiLine2.Location = new System.Drawing.Point(352, 55);
+ this.uiLine2.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
+ this.uiLine2.Location = new System.Drawing.Point(352, 51);
this.uiLine2.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine2.Name = "uiLine2";
- this.uiLine2.Size = new System.Drawing.Size(266, 18);
+ this.uiLine2.Size = new System.Drawing.Size(266, 27);
this.uiLine2.TabIndex = 26;
this.uiLine2.Text = "uiImageListBox";
this.uiLine2.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// 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, 55);
this.uiLine1.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine1.Name = "uiLine1";
@@ -106,6 +113,7 @@ namespace Sunny.UI.Demo
//
this.uiImageListBox1.FillColor = System.Drawing.Color.White;
this.uiImageListBox1.Font = new System.Drawing.Font("宋体", 12F);
+ this.uiImageListBox1.HoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(155)))), ((int)(((byte)(200)))), ((int)(((byte)(255)))));
this.uiImageListBox1.ItemHeight = 80;
this.uiImageListBox1.ItemSelectForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(243)))), ((int)(((byte)(255)))));
this.uiImageListBox1.Location = new System.Drawing.Point(352, 85);
@@ -113,6 +121,7 @@ namespace Sunny.UI.Demo
this.uiImageListBox1.MinimumSize = new System.Drawing.Size(1, 1);
this.uiImageListBox1.Name = "uiImageListBox1";
this.uiImageListBox1.Padding = new System.Windows.Forms.Padding(2);
+ this.uiImageListBox1.ShowText = false;
this.uiImageListBox1.Size = new System.Drawing.Size(266, 343);
this.uiImageListBox1.TabIndex = 24;
this.uiImageListBox1.Text = "uiImageListBox1";
diff --git a/SunnyUI.Demo/Controls/FNavigation.Designer.cs b/SunnyUI.Demo/Controls/FNavigation.Designer.cs
index fe850b40..c45ec9ca 100644
--- a/SunnyUI.Demo/Controls/FNavigation.Designer.cs
+++ b/SunnyUI.Demo/Controls/FNavigation.Designer.cs
@@ -123,7 +123,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, 160);
this.uiLine2.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine2.Name = "uiLine2";
@@ -137,7 +139,6 @@ namespace Sunny.UI.Demo
this.uiNavMenu2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(240)))), ((int)(((byte)(240)))), ((int)(((byte)(240)))));
this.uiNavMenu2.BorderStyle = System.Windows.Forms.BorderStyle.None;
this.uiNavMenu2.DrawMode = System.Windows.Forms.TreeViewDrawMode.OwnerDrawAll;
- this.uiNavMenu2.ExpandSelectFirst = true;
this.uiNavMenu2.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(240)))), ((int)(((byte)(240)))), ((int)(((byte)(240)))));
this.uiNavMenu2.Font = new System.Drawing.Font("宋体", 12F);
this.uiNavMenu2.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
@@ -204,18 +205,22 @@ namespace Sunny.UI.Demo
treeNode19,
treeNode20,
treeNode21});
+ this.uiNavMenu2.ScrollBarColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
+ this.uiNavMenu2.ScrollBarHoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
+ this.uiNavMenu2.ScrollBarPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
+ this.uiNavMenu2.ScrollFillColor = System.Drawing.Color.FromArgb(((int)(((byte)(240)))), ((int)(((byte)(240)))), ((int)(((byte)(240)))));
this.uiNavMenu2.SecondBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(235)))), ((int)(((byte)(235)))));
this.uiNavMenu2.SelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(250)))), ((int)(((byte)(250)))), ((int)(((byte)(250)))));
+ this.uiNavMenu2.SelectedColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(250)))), ((int)(((byte)(250)))), ((int)(((byte)(250)))));
this.uiNavMenu2.ShowLines = false;
this.uiNavMenu2.Size = new System.Drawing.Size(253, 353);
- this.uiNavMenu2.Style = Sunny.UI.UIStyle.Custom;
this.uiNavMenu2.TabIndex = 22;
+ this.uiNavMenu2.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
//
// uiNavMenu1
//
this.uiNavMenu1.BorderStyle = System.Windows.Forms.BorderStyle.None;
this.uiNavMenu1.DrawMode = System.Windows.Forms.TreeViewDrawMode.OwnerDrawAll;
- this.uiNavMenu1.ExpandSelectFirst = true;
this.uiNavMenu1.Font = new System.Drawing.Font("宋体", 12F);
this.uiNavMenu1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(240)))), ((int)(((byte)(240)))), ((int)(((byte)(240)))));
this.uiNavMenu1.FullRowSelect = true;
@@ -283,12 +288,14 @@ namespace Sunny.UI.Demo
this.uiNavMenu1.ShowLines = false;
this.uiNavMenu1.Size = new System.Drawing.Size(253, 353);
this.uiNavMenu1.TabIndex = 21;
+ this.uiNavMenu1.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiNavMenu1.MenuItemClick += new Sunny.UI.UINavMenu.OnMenuItemClick(this.uiNavMenu1_MenuItemClick);
//
// uiNavBar1
//
this.uiNavBar1.Controls.Add(this.uiLine1);
this.uiNavBar1.Dock = System.Windows.Forms.DockStyle.Top;
+ this.uiNavBar1.DropMenuFont = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiNavBar1.Font = new System.Drawing.Font("宋体", 12F);
this.uiNavBar1.Location = new System.Drawing.Point(0, 35);
this.uiNavBar1.Name = "uiNavBar1";
@@ -337,6 +344,7 @@ namespace Sunny.UI.Demo
//
// uiLine1
//
+ this.uiLine1.BackColor = System.Drawing.Color.Transparent;
this.uiLine1.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(56)))), ((int)(((byte)(56)))), ((int)(((byte)(56)))));
this.uiLine1.Font = new System.Drawing.Font("宋体", 12F);
this.uiLine1.ForeColor = System.Drawing.Color.White;
diff --git a/SunnyUI.Demo/Controls/FRadioButton.Designer.cs b/SunnyUI.Demo/Controls/FRadioButton.Designer.cs
index 8f7f4208..9dd4696f 100644
--- a/SunnyUI.Demo/Controls/FRadioButton.Designer.cs
+++ b/SunnyUI.Demo/Controls/FRadioButton.Designer.cs
@@ -62,6 +62,7 @@ namespace Sunny.UI.Demo
this.uiButton4.Size = new System.Drawing.Size(100, 35);
this.uiButton4.TabIndex = 86;
this.uiButton4.Text = "选择";
+ this.uiButton4.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiButton4.Click += new System.EventHandler(this.uiButton4_Click);
//
// uiButton2
@@ -74,6 +75,7 @@ namespace Sunny.UI.Demo
this.uiButton2.Size = new System.Drawing.Size(100, 35);
this.uiButton2.TabIndex = 85;
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);
//
// uiRadioButtonGroup1
@@ -99,7 +101,7 @@ namespace Sunny.UI.Demo
this.uiRadioButtonGroup1.Size = new System.Drawing.Size(670, 173);
this.uiRadioButtonGroup1.TabIndex = 84;
this.uiRadioButtonGroup1.Text = "UIRadioButtonGroup";
- this.uiRadioButtonGroup1.TextAlignment = System.Drawing.ContentAlignment.MiddleCenter;
+ this.uiRadioButtonGroup1.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
this.uiRadioButtonGroup1.ValueChanged += new Sunny.UI.UIRadioButtonGroup.OnValueChanged(this.uiRadioButtonGroup1_ValueChanged);
//
// uiRadioButton12
@@ -135,9 +137,10 @@ namespace Sunny.UI.Demo
//
this.uiLabel3.AutoSize = true;
this.uiLabel3.Font = new System.Drawing.Font("宋体", 12F);
+ this.uiLabel3.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiLabel3.Location = new System.Drawing.Point(49, 254);
this.uiLabel3.Name = "uiLabel3";
- this.uiLabel3.Size = new System.Drawing.Size(131, 21);
+ this.uiLabel3.Size = new System.Drawing.Size(119, 16);
this.uiLabel3.TabIndex = 81;
this.uiLabel3.Text = "GroupIndex = 3";
this.uiLabel3.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
@@ -186,9 +189,10 @@ namespace Sunny.UI.Demo
//
this.uiLabel2.AutoSize = true;
this.uiLabel2.Font = new System.Drawing.Font("宋体", 12F);
+ this.uiLabel2.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiLabel2.Location = new System.Drawing.Point(49, 213);
this.uiLabel2.Name = "uiLabel2";
- this.uiLabel2.Size = new System.Drawing.Size(131, 21);
+ this.uiLabel2.Size = new System.Drawing.Size(119, 16);
this.uiLabel2.TabIndex = 77;
this.uiLabel2.Text = "GroupIndex = 2";
this.uiLabel2.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
@@ -237,9 +241,10 @@ namespace Sunny.UI.Demo
//
this.uiLabel1.AutoSize = true;
this.uiLabel1.Font = new System.Drawing.Font("宋体", 12F);
+ this.uiLabel1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiLabel1.Location = new System.Drawing.Point(49, 172);
this.uiLabel1.Name = "uiLabel1";
- this.uiLabel1.Size = new System.Drawing.Size(131, 21);
+ this.uiLabel1.Size = new System.Drawing.Size(119, 16);
this.uiLabel1.TabIndex = 73;
this.uiLabel1.Text = "GroupIndex = 1";
this.uiLabel1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
@@ -286,7 +291,9 @@ namespace Sunny.UI.Demo
//
// uiLine3
//
+ this.uiLine3.BackColor = System.Drawing.Color.Transparent;
this.uiLine3.Font = new System.Drawing.Font("宋体", 12F);
+ this.uiLine3.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiLine3.Location = new System.Drawing.Point(30, 131);
this.uiLine3.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine3.Name = "uiLine3";
@@ -323,7 +330,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";
@@ -332,7 +341,7 @@ namespace Sunny.UI.Demo
this.uiLine2.Text = "UIRadioButton";
this.uiLine2.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
- // FRadioButton1
+ // FRadioButton
//
this.AllowShowTitle = true;
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
@@ -358,7 +367,7 @@ namespace Sunny.UI.Demo
this.Controls.Add(this.uiRadioButton2);
this.Controls.Add(this.uiRadioButton1);
this.Controls.Add(this.uiLine2);
- this.Name = "FRadioButton1";
+ this.Name = "FRadioButton";
this.Padding = new System.Windows.Forms.Padding(0, 35, 0, 0);
this.ShowTitle = true;
this.Symbol = 61842;
diff --git a/SunnyUI.Demo/Controls/FRadioButton.cs b/SunnyUI.Demo/Controls/FRadioButton.cs
index 3c7df495..9f12268a 100644
--- a/SunnyUI.Demo/Controls/FRadioButton.cs
+++ b/SunnyUI.Demo/Controls/FRadioButton.cs
@@ -23,7 +23,7 @@ namespace Sunny.UI.Demo
private void uiButton2_Click(object sender, EventArgs e)
{
- uiRadioButtonGroup1.SelectedNone();
+ uiRadioButtonGroup1.SelectedIndex = -1;
}
private void uiButton4_Click(object sender, EventArgs e)
diff --git a/SunnyUI.Demo/Controls/FSplitContainer.designer.cs b/SunnyUI.Demo/Controls/FSplitContainer.designer.cs
index 933de590..eb3ce209 100644
--- a/SunnyUI.Demo/Controls/FSplitContainer.designer.cs
+++ b/SunnyUI.Demo/Controls/FSplitContainer.designer.cs
@@ -73,7 +73,6 @@ namespace Sunny.UI.Demo
this.uiSplitContainer1.SplitterDistance = 266;
this.uiSplitContainer1.SplitterWidth = 11;
this.uiSplitContainer1.TabIndex = 0;
- this.uiSplitContainer1.ZoomScaleRect = new System.Drawing.Rectangle(0, 0, 0, 0);
//
// uiNavMenuEx1
//
@@ -107,10 +106,8 @@ namespace Sunny.UI.Demo
treeNode7});
this.uiNavMenuEx1.ShowLines = false;
this.uiNavMenuEx1.Size = new System.Drawing.Size(266, 415);
- this.uiNavMenuEx1.Style = Sunny.UI.UIStyle.Custom;
this.uiNavMenuEx1.TabIndex = 0;
this.uiNavMenuEx1.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
- this.uiNavMenuEx1.ZoomScaleRect = new System.Drawing.Rectangle(0, 0, 0, 0);
this.uiNavMenuEx1.NodeRightSymbolClick += new Sunny.UI.UINavMenu.OnNodeRightSymbolClick(this.uiNavMenuEx1_NodeRightSymbolClick);
//
// uiSplitContainer2
@@ -134,7 +131,6 @@ namespace Sunny.UI.Demo
this.uiSplitContainer2.SplitterDistance = 244;
this.uiSplitContainer2.SplitterWidth = 11;
this.uiSplitContainer2.TabIndex = 0;
- this.uiSplitContainer2.ZoomScaleRect = new System.Drawing.Rectangle(0, 0, 0, 0);
//
// uiListBox1
//
@@ -151,7 +147,6 @@ namespace Sunny.UI.Demo
this.uiListBox1.Size = new System.Drawing.Size(523, 244);
this.uiListBox1.TabIndex = 0;
this.uiListBox1.Text = "uiListBox1";
- this.uiListBox1.ZoomScaleRect = new System.Drawing.Rectangle(0, 0, 0, 0);
//
// uiButton1
//
@@ -164,7 +159,6 @@ namespace Sunny.UI.Demo
this.uiButton1.TabIndex = 0;
this.uiButton1.Text = "清除";
this.uiButton1.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
- this.uiButton1.ZoomScaleRect = new System.Drawing.Rectangle(0, 0, 0, 0);
this.uiButton1.Click += new System.EventHandler(this.uiButton1_Click);
//
// FSplitContainer
diff --git a/SunnyUI.Demo/Forms/FDialogs.Designer.cs b/SunnyUI.Demo/Forms/FDialogs.Designer.cs
index 578201e4..d2964bc6 100644
--- a/SunnyUI.Demo/Forms/FDialogs.Designer.cs
+++ b/SunnyUI.Demo/Forms/FDialogs.Designer.cs
@@ -85,7 +85,7 @@
this.btnError.RectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(184)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
this.btnError.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(184)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
this.btnError.Size = new System.Drawing.Size(100, 35);
- this.btnError.Style = Sunny.UI.UIStyle.Red;
+ this.btnError.Style = Sunny.UI.UIStyle.Custom;
this.btnError.StyleCustomMode = true;
this.btnError.Symbol = 61532;
this.btnError.TabIndex = 29;
@@ -111,7 +111,7 @@
this.btnWarn.RectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(176)))), ((int)(((byte)(124)))), ((int)(((byte)(32)))));
this.btnWarn.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(176)))), ((int)(((byte)(124)))), ((int)(((byte)(32)))));
this.btnWarn.Size = new System.Drawing.Size(100, 35);
- this.btnWarn.Style = Sunny.UI.UIStyle.Orange;
+ this.btnWarn.Style = Sunny.UI.UIStyle.Custom;
this.btnWarn.StyleCustomMode = true;
this.btnWarn.Symbol = 61553;
this.btnWarn.TabIndex = 28;
@@ -137,7 +137,7 @@
this.btnSuccess.RectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(152)))), ((int)(((byte)(32)))));
this.btnSuccess.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(152)))), ((int)(((byte)(32)))));
this.btnSuccess.Size = new System.Drawing.Size(100, 35);
- this.btnSuccess.Style = Sunny.UI.UIStyle.Green;
+ this.btnSuccess.Style = Sunny.UI.UIStyle.Custom;
this.btnSuccess.StyleCustomMode = true;
this.btnSuccess.Symbol = 61528;
this.btnSuccess.TabIndex = 27;
@@ -154,6 +154,7 @@
this.btnAsk.Name = "btnAsk";
this.btnAsk.Padding = new System.Windows.Forms.Padding(28, 0, 0, 0);
this.btnAsk.Size = new System.Drawing.Size(100, 35);
+ this.btnAsk.Style = Sunny.UI.UIStyle.Custom;
this.btnAsk.StyleCustomMode = true;
this.btnAsk.Symbol = 61529;
this.btnAsk.TabIndex = 26;
@@ -209,7 +210,7 @@
this.btnInfo.RectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(112)))), ((int)(((byte)(112)))), ((int)(((byte)(112)))));
this.btnInfo.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(112)))), ((int)(((byte)(112)))), ((int)(((byte)(112)))));
this.btnInfo.Size = new System.Drawing.Size(100, 35);
- this.btnInfo.Style = Sunny.UI.UIStyle.Gray;
+ this.btnInfo.Style = Sunny.UI.UIStyle.Custom;
this.btnInfo.StyleCustomMode = true;
this.btnInfo.Symbol = 61530;
this.btnInfo.TabIndex = 37;
@@ -279,7 +280,9 @@
//
// 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, 55);
this.uiLine1.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine1.Name = "uiLine1";
@@ -290,7 +293,9 @@
//
// 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, 134);
this.uiLine2.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine2.Name = "uiLine2";
@@ -301,7 +306,9 @@
//
// uiLine3
//
+ this.uiLine3.BackColor = System.Drawing.Color.Transparent;
this.uiLine3.Font = new System.Drawing.Font("宋体", 12F);
+ this.uiLine3.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiLine3.Location = new System.Drawing.Point(30, 213);
this.uiLine3.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine3.Name = "uiLine3";
@@ -312,7 +319,9 @@
//
// uiLine4
//
+ this.uiLine4.BackColor = System.Drawing.Color.Transparent;
this.uiLine4.Font = new System.Drawing.Font("宋体", 12F);
+ this.uiLine4.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiLine4.Location = new System.Drawing.Point(543, 213);
this.uiLine4.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine4.Name = "uiLine4";
@@ -338,7 +347,9 @@
//
// uiLine5
//
+ this.uiLine5.BackColor = System.Drawing.Color.Transparent;
this.uiLine5.Font = new System.Drawing.Font("宋体", 12F);
+ this.uiLine5.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiLine5.Location = new System.Drawing.Point(30, 292);
this.uiLine5.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine5.Name = "uiLine5";
@@ -356,6 +367,7 @@
this.uiSymbolButton2.Name = "uiSymbolButton2";
this.uiSymbolButton2.Padding = new System.Windows.Forms.Padding(28, 0, 0, 0);
this.uiSymbolButton2.Size = new System.Drawing.Size(100, 35);
+ this.uiSymbolButton2.Style = Sunny.UI.UIStyle.Custom;
this.uiSymbolButton2.StyleCustomMode = true;
this.uiSymbolButton2.Symbol = 61530;
this.uiSymbolButton2.TabIndex = 57;
@@ -381,7 +393,7 @@
this.uiSymbolButton4.RectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(184)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
this.uiSymbolButton4.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(184)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
this.uiSymbolButton4.Size = new System.Drawing.Size(100, 35);
- this.uiSymbolButton4.Style = Sunny.UI.UIStyle.Red;
+ this.uiSymbolButton4.Style = Sunny.UI.UIStyle.Custom;
this.uiSymbolButton4.StyleCustomMode = true;
this.uiSymbolButton4.Symbol = 61532;
this.uiSymbolButton4.TabIndex = 55;
@@ -407,7 +419,7 @@
this.uiSymbolButton5.RectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(176)))), ((int)(((byte)(124)))), ((int)(((byte)(32)))));
this.uiSymbolButton5.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(176)))), ((int)(((byte)(124)))), ((int)(((byte)(32)))));
this.uiSymbolButton5.Size = new System.Drawing.Size(100, 35);
- this.uiSymbolButton5.Style = Sunny.UI.UIStyle.Orange;
+ this.uiSymbolButton5.Style = Sunny.UI.UIStyle.Custom;
this.uiSymbolButton5.StyleCustomMode = true;
this.uiSymbolButton5.Symbol = 61553;
this.uiSymbolButton5.TabIndex = 54;
@@ -433,7 +445,7 @@
this.uiSymbolButton6.RectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(152)))), ((int)(((byte)(32)))));
this.uiSymbolButton6.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(152)))), ((int)(((byte)(32)))));
this.uiSymbolButton6.Size = new System.Drawing.Size(100, 35);
- this.uiSymbolButton6.Style = Sunny.UI.UIStyle.Green;
+ this.uiSymbolButton6.Style = Sunny.UI.UIStyle.Custom;
this.uiSymbolButton6.StyleCustomMode = true;
this.uiSymbolButton6.Symbol = 61528;
this.uiSymbolButton6.TabIndex = 53;
@@ -443,7 +455,9 @@
//
// uiLine6
//
+ this.uiLine6.BackColor = System.Drawing.Color.Transparent;
this.uiLine6.Font = new System.Drawing.Font("宋体", 12F);
+ this.uiLine6.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiLine6.Location = new System.Drawing.Point(30, 450);
this.uiLine6.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine6.Name = "uiLine6";
@@ -485,7 +499,9 @@
//
// uiLine7
//
+ this.uiLine7.BackColor = System.Drawing.Color.Transparent;
this.uiLine7.Font = new System.Drawing.Font("宋体", 12F);
+ this.uiLine7.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiLine7.Location = new System.Drawing.Point(30, 371);
this.uiLine7.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine7.Name = "uiLine7";
@@ -512,7 +528,7 @@
this.uiSymbolButton7.RectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(184)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
this.uiSymbolButton7.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(184)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
this.uiSymbolButton7.Size = new System.Drawing.Size(100, 35);
- this.uiSymbolButton7.Style = Sunny.UI.UIStyle.Red;
+ this.uiSymbolButton7.Style = Sunny.UI.UIStyle.Custom;
this.uiSymbolButton7.StyleCustomMode = true;
this.uiSymbolButton7.Symbol = 61532;
this.uiSymbolButton7.TabIndex = 64;
@@ -538,7 +554,7 @@
this.uiSymbolButton8.RectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(176)))), ((int)(((byte)(124)))), ((int)(((byte)(32)))));
this.uiSymbolButton8.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(176)))), ((int)(((byte)(124)))), ((int)(((byte)(32)))));
this.uiSymbolButton8.Size = new System.Drawing.Size(100, 35);
- this.uiSymbolButton8.Style = Sunny.UI.UIStyle.Orange;
+ this.uiSymbolButton8.Style = Sunny.UI.UIStyle.Custom;
this.uiSymbolButton8.StyleCustomMode = true;
this.uiSymbolButton8.Symbol = 61553;
this.uiSymbolButton8.TabIndex = 63;
@@ -564,7 +580,7 @@
this.uiSymbolButton9.RectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(152)))), ((int)(((byte)(32)))));
this.uiSymbolButton9.RectSelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(152)))), ((int)(((byte)(32)))));
this.uiSymbolButton9.Size = new System.Drawing.Size(100, 35);
- this.uiSymbolButton9.Style = Sunny.UI.UIStyle.Green;
+ this.uiSymbolButton9.Style = Sunny.UI.UIStyle.Custom;
this.uiSymbolButton9.StyleCustomMode = true;
this.uiSymbolButton9.Symbol = 61528;
this.uiSymbolButton9.TabIndex = 62;
@@ -574,7 +590,9 @@
//
// 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(372, 371);
this.uiLine8.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine8.Name = "uiLine8";
@@ -630,7 +648,9 @@
//
// uiLine9
//
+ this.uiLine9.BackColor = System.Drawing.Color.Transparent;
this.uiLine9.Font = new System.Drawing.Font("宋体", 12F);
+ this.uiLine9.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiLine9.Location = new System.Drawing.Point(201, 213);
this.uiLine9.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine9.Name = "uiLine9";
@@ -641,7 +661,9 @@
//
// uiLine10
//
+ this.uiLine10.BackColor = System.Drawing.Color.Transparent;
this.uiLine10.Font = new System.Drawing.Font("宋体", 12F);
+ this.uiLine10.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiLine10.Location = new System.Drawing.Point(372, 450);
this.uiLine10.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine10.Name = "uiLine10";
@@ -667,7 +689,9 @@
//
// uiLine11
//
+ this.uiLine11.BackColor = System.Drawing.Color.Transparent;
this.uiLine11.Font = new System.Drawing.Font("宋体", 12F);
+ this.uiLine11.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiLine11.Location = new System.Drawing.Point(372, 213);
this.uiLine11.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine11.Name = "uiLine11";
diff --git a/SunnyUI.Demo/Industrial/FMeter.Designer.cs b/SunnyUI.Demo/Industrial/FMeter.Designer.cs
index 5ffc25b4..b5c34bf2 100644
--- a/SunnyUI.Demo/Industrial/FMeter.Designer.cs
+++ b/SunnyUI.Demo/Industrial/FMeter.Designer.cs
@@ -30,74 +30,40 @@ namespace Sunny.UI.Demo
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FMeter));
- this.uiPanel1 = new Sunny.UI.UIPanel();
this.uiAnalogMeter1 = new Sunny.UI.UIAnalogMeter();
this.uiLine9 = new Sunny.UI.UILine();
this.uiRoundMeter2 = new Sunny.UI.UIRoundMeter();
this.uiLine6 = new Sunny.UI.UILine();
this.uiRoundMeter1 = new Sunny.UI.UIRoundMeter();
- this.uiLine1 = new Sunny.UI.UILine();
- this.uiKnob2 = new Sunny.UI.UIKnob();
- this.uiKnob3 = new Sunny.UI.UIKnob();
- this.uiKnob4 = new Sunny.UI.UIKnob();
- this.uiKnob1 = new Sunny.UI.UIKnob();
- this.uiPanel1.SuspendLayout();
this.SuspendLayout();
//
- // uiPanel1
- //
- this.uiPanel1.Controls.Add(this.uiAnalogMeter1);
- this.uiPanel1.Controls.Add(this.uiLine9);
- this.uiPanel1.Controls.Add(this.uiRoundMeter2);
- this.uiPanel1.Controls.Add(this.uiLine6);
- this.uiPanel1.Controls.Add(this.uiRoundMeter1);
- this.uiPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
- this.uiPanel1.FillColor2 = System.Drawing.Color.CornflowerBlue;
- this.uiPanel1.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
- this.uiPanel1.Location = new System.Drawing.Point(0, 35);
- this.uiPanel1.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
- this.uiPanel1.MinimumSize = new System.Drawing.Size(1, 1);
- this.uiPanel1.Name = "uiPanel1";
- this.uiPanel1.RadiusSides = Sunny.UI.UICornerRadiusSides.None;
- this.uiPanel1.RectSides = System.Windows.Forms.ToolStripStatusLabelBorderSides.None;
- this.uiPanel1.Size = new System.Drawing.Size(800, 504);
- this.uiPanel1.Style = Sunny.UI.UIStyle.Custom;
- this.uiPanel1.StyleCustomMode = true;
- this.uiPanel1.TabIndex = 69;
- this.uiPanel1.Text = null;
- this.uiPanel1.TextAlignment = System.Drawing.ContentAlignment.MiddleCenter;
- this.uiPanel1.ZoomScaleRect = new System.Drawing.Rectangle(0, 0, 0, 0);
- //
// uiAnalogMeter1
//
this.uiAnalogMeter1.BackColor = System.Drawing.Color.Transparent;
this.uiAnalogMeter1.Font = new System.Drawing.Font("宋体", 12F);
- this.uiAnalogMeter1.Location = new System.Drawing.Point(381, 61);
+ this.uiAnalogMeter1.Location = new System.Drawing.Point(381, 96);
this.uiAnalogMeter1.MaxValue = 100D;
this.uiAnalogMeter1.MinimumSize = new System.Drawing.Size(1, 1);
this.uiAnalogMeter1.MinValue = 0D;
this.uiAnalogMeter1.Name = "uiAnalogMeter1";
this.uiAnalogMeter1.Renderer = null;
this.uiAnalogMeter1.Size = new System.Drawing.Size(140, 140);
- this.uiAnalogMeter1.Style = Sunny.UI.UIStyle.Custom;
this.uiAnalogMeter1.TabIndex = 73;
this.uiAnalogMeter1.Text = "uiAnalogMeter1";
this.uiAnalogMeter1.Value = 0D;
- this.uiAnalogMeter1.ZoomScaleRect = new System.Drawing.Rectangle(0, 0, 0, 0);
//
// uiLine9
//
this.uiLine9.BackColor = System.Drawing.Color.Transparent;
this.uiLine9.Font = new System.Drawing.Font("宋体", 12F);
- this.uiLine9.Location = new System.Drawing.Point(381, 20);
+ this.uiLine9.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
+ this.uiLine9.Location = new System.Drawing.Point(381, 55);
this.uiLine9.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine9.Name = "uiLine9";
this.uiLine9.Size = new System.Drawing.Size(319, 20);
- this.uiLine9.Style = Sunny.UI.UIStyle.Custom;
this.uiLine9.TabIndex = 72;
this.uiLine9.Text = "UIAnalogMeter";
this.uiLine9.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
- this.uiLine9.ZoomScaleRect = new System.Drawing.Rectangle(0, 0, 0, 0);
//
// uiRoundMeter2
//
@@ -106,29 +72,26 @@ namespace Sunny.UI.Demo
this.uiRoundMeter2.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("uiRoundMeter2.BackgroundImage")));
this.uiRoundMeter2.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None;
this.uiRoundMeter2.Font = new System.Drawing.Font("宋体", 12F);
- this.uiRoundMeter2.Location = new System.Drawing.Point(186, 56);
+ this.uiRoundMeter2.Location = new System.Drawing.Point(186, 91);
this.uiRoundMeter2.MeterType = Sunny.UI.UIRoundMeter.TMeterType.Wind;
this.uiRoundMeter2.MinimumSize = new System.Drawing.Size(1, 1);
this.uiRoundMeter2.Name = "uiRoundMeter2";
this.uiRoundMeter2.Size = new System.Drawing.Size(140, 140);
- this.uiRoundMeter2.Style = Sunny.UI.UIStyle.Custom;
this.uiRoundMeter2.TabIndex = 71;
this.uiRoundMeter2.Text = "uiRoundMeter2";
- this.uiRoundMeter2.ZoomScaleRect = new System.Drawing.Rectangle(0, 0, 0, 0);
//
// uiLine6
//
this.uiLine6.BackColor = System.Drawing.Color.Transparent;
this.uiLine6.Font = new System.Drawing.Font("宋体", 12F);
- this.uiLine6.Location = new System.Drawing.Point(30, 20);
+ this.uiLine6.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
+ this.uiLine6.Location = new System.Drawing.Point(30, 55);
this.uiLine6.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine6.Name = "uiLine6";
this.uiLine6.Size = new System.Drawing.Size(319, 20);
- this.uiLine6.Style = Sunny.UI.UIStyle.Custom;
this.uiLine6.TabIndex = 70;
this.uiLine6.Text = "UIRoundMeter";
this.uiLine6.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
- this.uiLine6.ZoomScaleRect = new System.Drawing.Rectangle(0, 0, 0, 0);
//
// uiRoundMeter1
//
@@ -137,162 +100,37 @@ namespace Sunny.UI.Demo
this.uiRoundMeter1.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("uiRoundMeter1.BackgroundImage")));
this.uiRoundMeter1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None;
this.uiRoundMeter1.Font = new System.Drawing.Font("宋体", 12F);
- this.uiRoundMeter1.Location = new System.Drawing.Point(30, 56);
+ this.uiRoundMeter1.Location = new System.Drawing.Point(30, 91);
this.uiRoundMeter1.MinimumSize = new System.Drawing.Size(1, 1);
this.uiRoundMeter1.Name = "uiRoundMeter1";
this.uiRoundMeter1.Size = new System.Drawing.Size(140, 140);
- this.uiRoundMeter1.Style = Sunny.UI.UIStyle.Custom;
this.uiRoundMeter1.TabIndex = 69;
this.uiRoundMeter1.Text = "uiRoundMeter1";
- this.uiRoundMeter1.ZoomScaleRect = new System.Drawing.Rectangle(0, 0, 0, 0);
- //
- // uiLine1
- //
- this.uiLine1.BackColor = System.Drawing.Color.Transparent;
- this.uiLine1.Font = new System.Drawing.Font("宋体", 12F);
- this.uiLine1.Location = new System.Drawing.Point(30, 276);
- 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 = 71;
- this.uiLine1.Text = "UIKnob";
- this.uiLine1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
- this.uiLine1.ZoomScaleRect = new System.Drawing.Rectangle(0, 0, 0, 0);
- //
- // uiKnob2
- //
- this.uiKnob2.EndAngle = 440F;
- this.uiKnob2.ImeMode = System.Windows.Forms.ImeMode.On;
- this.uiKnob2.KnobBackColor = System.Drawing.Color.Black;
- this.uiKnob2.KnobPointerStyle = Sunny.UI.UIKnob.KnobPointerStyles.line;
- this.uiKnob2.LargeChange = 5;
- this.uiKnob2.Location = new System.Drawing.Point(208, 326);
- this.uiKnob2.Maximum = 100;
- this.uiKnob2.Minimum = -100;
- this.uiKnob2.Name = "uiKnob2";
- this.uiKnob2.PointerColor = System.Drawing.Color.SlateBlue;
- this.uiKnob2.ScaleColor = System.Drawing.Color.Black;
- this.uiKnob2.ScaleDivisions = 21;
- this.uiKnob2.ScaleFont = new System.Drawing.Font("Microsoft Sans Serif", 8.25F);
- this.uiKnob2.ScaleSubDivisions = 4;
- this.uiKnob2.ShowLargeScale = true;
- this.uiKnob2.ShowSmallScale = false;
- this.uiKnob2.Size = new System.Drawing.Size(150, 150);
- this.uiKnob2.SmallChange = 1;
- this.uiKnob2.StartAngle = 100F;
- this.uiKnob2.TabIndex = 1;
- this.uiKnob2.Value = -30;
- this.uiKnob2.ZoomScaleRect = new System.Drawing.Rectangle(0, 0, 0, 0);
- //
- // uiKnob3
- //
- this.uiKnob3.EndAngle = 405F;
- this.uiKnob3.ImeMode = System.Windows.Forms.ImeMode.On;
- this.uiKnob3.KnobBackColor = System.Drawing.Color.White;
- this.uiKnob3.KnobPointerStyle = Sunny.UI.UIKnob.KnobPointerStyles.line;
- this.uiKnob3.LargeChange = 5;
- this.uiKnob3.Location = new System.Drawing.Point(386, 326);
- this.uiKnob3.Maximum = 100;
- this.uiKnob3.Minimum = 0;
- this.uiKnob3.Name = "uiKnob3";
- this.uiKnob3.PointerColor = System.Drawing.Color.SlateBlue;
- this.uiKnob3.ScaleColor = System.Drawing.Color.Black;
- this.uiKnob3.ScaleDivisions = 11;
- this.uiKnob3.ScaleFont = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.uiKnob3.ScaleFontAutoSize = false;
- this.uiKnob3.ScaleSubDivisions = 1;
- this.uiKnob3.ShowLargeScale = true;
- this.uiKnob3.ShowSmallScale = true;
- this.uiKnob3.Size = new System.Drawing.Size(150, 150);
- this.uiKnob3.SmallChange = 2;
- this.uiKnob3.StartAngle = 135F;
- this.uiKnob3.TabIndex = 2;
- this.uiKnob3.Value = 0;
- this.uiKnob3.ZoomScaleRect = new System.Drawing.Rectangle(0, 0, 0, 0);
- //
- // uiKnob4
- //
- this.uiKnob4.DrawDivInside = true;
- this.uiKnob4.EndAngle = 360F;
- this.uiKnob4.ImeMode = System.Windows.Forms.ImeMode.On;
- this.uiKnob4.KnobBackColor = System.Drawing.Color.Gray;
- this.uiKnob4.KnobPointerStyle = Sunny.UI.UIKnob.KnobPointerStyles.circle;
- this.uiKnob4.LargeChange = 5;
- this.uiKnob4.Location = new System.Drawing.Point(564, 326);
- this.uiKnob4.Maximum = 10;
- this.uiKnob4.Minimum = 0;
- this.uiKnob4.Name = "uiKnob4";
- this.uiKnob4.PointerColor = System.Drawing.Color.White;
- this.uiKnob4.ScaleColor = System.Drawing.Color.Black;
- this.uiKnob4.ScaleDivisions = 11;
- this.uiKnob4.ScaleFont = new System.Drawing.Font("Bauhaus 93", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.uiKnob4.ScaleFontAutoSize = false;
- this.uiKnob4.ScaleSubDivisions = 4;
- this.uiKnob4.ShowLargeScale = true;
- this.uiKnob4.ShowSmallScale = false;
- this.uiKnob4.Size = new System.Drawing.Size(150, 150);
- this.uiKnob4.SmallChange = 1;
- this.uiKnob4.StartAngle = 180F;
- this.uiKnob4.TabIndex = 3;
- this.uiKnob4.Value = 3;
- this.uiKnob4.ZoomScaleRect = new System.Drawing.Rectangle(0, 0, 0, 0);
- //
- // uiKnob1
- //
- this.uiKnob1.EndAngle = 405F;
- this.uiKnob1.KnobBackColor = System.Drawing.Color.White;
- this.uiKnob1.KnobPointerStyle = Sunny.UI.UIKnob.KnobPointerStyles.circle;
- this.uiKnob1.LargeChange = 5;
- this.uiKnob1.Location = new System.Drawing.Point(30, 326);
- this.uiKnob1.Maximum = 100;
- this.uiKnob1.Minimum = 0;
- this.uiKnob1.Name = "uiKnob1";
- this.uiKnob1.PointerColor = System.Drawing.Color.SlateBlue;
- this.uiKnob1.ScaleColor = System.Drawing.Color.Black;
- this.uiKnob1.ScaleDivisions = 11;
- this.uiKnob1.ScaleFont = new System.Drawing.Font("宋体", 9F);
- this.uiKnob1.ScaleSubDivisions = 4;
- this.uiKnob1.ShowLargeScale = true;
- this.uiKnob1.ShowSmallScale = false;
- this.uiKnob1.Size = new System.Drawing.Size(150, 150);
- this.uiKnob1.SmallChange = 1;
- this.uiKnob1.StartAngle = 135F;
- this.uiKnob1.TabIndex = 72;
- this.uiKnob1.Value = 0;
- this.uiKnob1.ZoomScaleRect = new System.Drawing.Rectangle(0, 0, 0, 0);
//
// FMeter
//
this.AllowShowTitle = true;
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
this.ClientSize = new System.Drawing.Size(800, 539);
- this.Controls.Add(this.uiKnob1);
- this.Controls.Add(this.uiKnob4);
- this.Controls.Add(this.uiKnob3);
- this.Controls.Add(this.uiKnob2);
- this.Controls.Add(this.uiLine1);
- this.Controls.Add(this.uiPanel1);
+ this.Controls.Add(this.uiAnalogMeter1);
+ this.Controls.Add(this.uiLine9);
+ this.Controls.Add(this.uiLine6);
+ this.Controls.Add(this.uiRoundMeter2);
+ this.Controls.Add(this.uiRoundMeter1);
this.Name = "FMeter";
this.Padding = new System.Windows.Forms.Padding(0, 35, 0, 0);
this.ShowTitle = true;
this.Symbol = 61668;
this.Text = "Meter";
- this.uiPanel1.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
- private UIPanel uiPanel1;
private UIAnalogMeter uiAnalogMeter1;
private UILine uiLine9;
private UIRoundMeter uiRoundMeter2;
private UILine uiLine6;
private UIRoundMeter uiRoundMeter1;
- private UILine uiLine1;
- private UIKnob uiKnob2;
- private UIKnob uiKnob3;
- private UIKnob uiKnob4;
- private UIKnob uiKnob1;
}
}
\ No newline at end of file
diff --git a/SunnyUI.Demo/Industrial/FMeter.resx b/SunnyUI.Demo/Industrial/FMeter.resx
index ac0c0d44..b07eed8d 100644
--- a/SunnyUI.Demo/Industrial/FMeter.resx
+++ b/SunnyUI.Demo/Industrial/FMeter.resx
@@ -317,265 +317,265 @@
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
- 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
+ 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
- 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
+ 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
- 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
- b0BOOeX/AwoIhqoMLNEoAAAAAElFTkSuQmCC
+ 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
+ 5JRT/j+8XYYnp5DajQAAAABJRU5ErkJggg==
\ No newline at end of file
diff --git a/SunnyUI.Demo/SunnyUI.Demo.csproj b/SunnyUI.Demo/SunnyUI.Demo.csproj
index b44c95c7..23b89251 100644
--- a/SunnyUI.Demo/SunnyUI.Demo.csproj
+++ b/SunnyUI.Demo/SunnyUI.Demo.csproj
@@ -42,10 +42,12 @@
- ..\packages\SunnyUI.3.5.2\lib\net472\SunnyUI.dll
+ False
+ ..\Bin\net472\SunnyUI.dll
- ..\packages\SunnyUI.Common.3.5.1\lib\net472\SunnyUI.Common.dll
+ False
+ ..\Bin\net472\SunnyUI.Common.dll
@@ -565,7 +567,6 @@
-
SettingsSingleFileGenerator
Settings.Designer.cs
diff --git a/SunnyUI.Demo/packages.config b/SunnyUI.Demo/packages.config
deleted file mode 100644
index 0e7ed8d4..00000000
--- a/SunnyUI.Demo/packages.config
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/SunnyUI/Controls/UIKnobControl.cs b/SunnyUI/Controls/UIKnobControl.cs
deleted file mode 100644
index 5b0ac54c..00000000
--- a/SunnyUI/Controls/UIKnobControl.cs
+++ /dev/null
@@ -1,1474 +0,0 @@
-/******************************************************************************
- * SunnyUI 开源控件库、工具类库、扩展类库、多页面开发框架。
- * CopyRight (C) 2012-2023 ShenYongHua(沈永华).
- * QQ群:56829229 QQ:17612584 EMail:SunnyUI@QQ.Com
- *
- * Blog: https://www.cnblogs.com/yhuse
- * Gitee: https://gitee.com/yhuse/SunnyUI
- * GitHub: https://github.com/yhuse/SunnyUI
- *
- * SunnyUI can be used for free under the GPL-3.0 license.
- * If you use this code, please keep this note.
- * 如果您使用此代码,请保留此说明。
- ******************************************************************************
- * 文件名称: UIKnob.cs
- * 文件说明: C# Knob Control using Windows Forms
- * 文件作者: Fabrice Lacharme
- * 开源协议: CPOL
- * 引用地址: https://www.codeproject.com/Tips/1187460/Csharp-Knob-Control-using-Windows-Forms
-******************************************************************************/
-
-#region License
-
-/* Copyright (c) 2017 Fabrice Lacharme
- * This code was originally written by Jigar Desai
- * http://www.c-sharpcorner.com/article/knob-control-using-windows-forms-and-gdi/
- * Note that another implementation exists in vb.net by Blong
- * https://www.codeproject.com/Articles/2563/VB-NET-Knob-Control-using-Windows-Forms-and-GDI?msg=1884770#xx1884770xx
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to
- * deal in the Software without restriction, including without limitation the
- * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
- * sell copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-#endregion
-
-#region Contact
-
-/*
- * Fabrice Lacharme
- * Email: fabrice.lacharme@gmail.com
- */
-
-#endregion
-
-using System;
-using System.ComponentModel;
-using System.Drawing;
-using System.Drawing.Drawing2D;
-using System.Windows.Forms;
-
-namespace Sunny.UI
-{
- /* Original code from Jigar Desai on C-SharpCorner.com
- * see https://www.c-sharpcorner.com/article/knob-control-using-windows-forms-and-gdi/
- * KnobControl is a knob control written in C#
- *
- * CodeProject: https://www.codeproject.com/Tips/1187460/Csharp-Knob-Control-using-Windows-Forms
- * Github: https://github.com/fabricelacharme/KnobControl
- *
- * 22/08/18 - version 1.0.O.1
- * Fixed: erroneous display in case of minimum value <> 0 (negative or positive)
- * Modified: DrawColorSlider, OnMouseMove
- *
- * Added: Font selection
- *
- *
- * 25/08/18 - version 1.0.0.2
- * Fixed: mouse click event: pointer button is not displayed correctly when the minimum is set to a non zero value.
- * Modified: getValueFromPosition
- *
- *
- * 04/01/2019 - version 1.0.0.3
- * Font & Size selection for graduations:
- * New property ScaleFontAutoSize:
- * - false = no AutoSize => Allow font selection
- * - true = AutoSize by program
- */
-
- ///
- /// Summary description for KnobControl.
- ///
- public class UIKnob : UserControl, IStyleInterface, IZoomScale
- {
- ///
- /// Required designer variable.
- ///
- private System.ComponentModel.Container components = null;
-
- ///
- /// Styles of pointer button
- ///
- public enum KnobPointerStyles
- {
- circle,
- line,
- }
-
- // A delegate type for hooking up ValueChanged notifications.
- public delegate void ValueChangedEventHandler(object Sender);
-
- #region private properties
-
- private KnobPointerStyles _knobPointerStyle = KnobPointerStyles.circle;
-
- private int _minimum = 0;
- private int _maximum = 25;
- private int _LargeChange = 5;
- private int _SmallChange = 1;
-
- private int _scaleDivisions;
- private int _scaleSubDivisions;
-
- private Font _scaleFont;
- private bool _scaleFontAutoSize = true;
-
- private bool _drawDivInside;
-
- private bool _showSmallScale = false;
- private bool _showLargeScale = true;
-
- private float _startAngle = 135;
- private float _endAngle = 405;
- private float deltaAngle;
- private int _mouseWheelBarPartitions = 10;
-
- private float drawRatio = 1;
- private float gradLength = 4;
-
- // Color of the pointer
- private Color _PointerColor = Color.SlateBlue;
- private Color _knobBackColor = Color.LightGray;
- private Color _scaleColor = Color.Black;
-
- private int _Value = 0;
- private bool isFocused = false;
- private bool isKnobRotating = false;
- private Rectangle rKnob;
- private Point pKnob;
- private Pen DottedPen;
-
- Brush brushKnob;
- Brush brushKnobPointer;
-
- private Font knobFont;
-
- //-------------------------------------------------------
- // declare Off screen image and Offscreen graphics
- //-------------------------------------------------------
- private Image OffScreenImage;
- private Graphics gOffScreen;
-
- #endregion
-
- #region event
- //-------------------------------------------------------
- // An event that clients can use to be notified whenever
- // the Value is Changed.
- //-------------------------------------------------------
- public event ValueChangedEventHandler ValueChanged;
-
- //-------------------------------------------------------
- // Invoke the ValueChanged event; called when value
- // is changed
- //-------------------------------------------------------
- protected virtual void OnValueChanged(object sender)
- {
- ValueChanged?.Invoke(sender);
- }
-
- #endregion
-
- #region (* public Properties *)
-
- ///
- /// Font of graduations
- ///
- [Description("Font of graduations")]
- [Category("KnobControl")]
- public Font ScaleFont
- {
- get { return _scaleFont; }
- set
- {
- _scaleFont = value;
- // Redraw
- SetDimensions();
- Invalidate();
- }
- }
-
- ///
- /// Autosize or not for font of graduations
- ///
- [Description("Autosize Font of graduations")]
- [Category("KnobControl")]
- [DefaultValue(true)]
- public bool ScaleFontAutoSize
- {
- get { return _scaleFontAutoSize; }
- set
- {
- _scaleFontAutoSize = value;
- // Redraw
- SetDimensions();
- Invalidate();
- }
- }
-
- ///
- /// Start angle to display graduations
- ///
- /// The start angle to display graduations.
- [Description("Set the start angle to display graduations (min 90)")]
- [Category("KnobControl")]
- [DefaultValue(135)]
- public float StartAngle
- {
- get { return _startAngle; }
- set
- {
- if (value >= 90 && value < _endAngle)
- {
- _startAngle = value;
- deltaAngle = _endAngle - StartAngle;
- // Redraw
- Invalidate();
- }
- }
- }
-
- ///
- /// End angle to display graduations
- ///
- /// The end angle to display graduations.
- [Description("Set the end angle to display graduations (max 450)")]
- [Category("KnobControl")]
- [DefaultValue(405)]
- public float EndAngle
- {
- get { return _endAngle; }
- set
- {
- if (value <= 450 && value > _startAngle)
- {
- _endAngle = value;
- deltaAngle = _endAngle - _startAngle;
- // Redraw
- Invalidate();
- }
- }
- }
-
- ///
- /// Style of pointer: circle or line
- ///
- [Description("Set the style of the knob pointer: a circle or a line")]
- [Category("KnobControl")]
- public KnobPointerStyles KnobPointerStyle
- {
- get { return _knobPointerStyle; }
- set
- {
- _knobPointerStyle = value;
- // Redraw
- Invalidate();
- }
- }
-
- ///
- /// Gets or sets the mouse wheel bar partitions.
- ///
- /// The mouse wheel bar partitions.
- /// exception thrown when value isn't greather than zero
- [Description("Set to how many parts is bar divided when using mouse wheel")]
- [Category("KnobControl")]
- [DefaultValue(10)]
- public int MouseWheelBarPartitions
- {
- get { return _mouseWheelBarPartitions; }
- set
- {
- if (value > 0) _mouseWheelBarPartitions = value;
- else throw new ArgumentOutOfRangeException("MouseWheelBarPartitions has to be greather than zero");
- }
- }
-
- ///
- /// Draw string graduations inside or outside knob circle
- ///
- ///
- [Description("Draw graduation strings inside or outside the knob circle")]
- [Category("KnobControl")]
- [DefaultValue(false)]
- public bool DrawDivInside
- {
- get { return _drawDivInside; }
- set
- {
- _drawDivInside = value;
- // Redraw
- SetDimensions();
- Invalidate();
- }
- }
-
- ///
- /// Color of graduations
- ///
- [Description("Color of graduations")]
- [Category("KnobControl")]
- public Color ScaleColor
- {
- get { return _scaleColor; }
- set
- {
- _scaleColor = value;
- // Redraw
- Invalidate();
- }
- }
-
- ///
- /// Color of graduations
- ///
- [Description("Color of knob")]
- [Category("KnobControl")]
- public Color KnobBackColor
- {
- get { return _knobBackColor; }
- set
- {
- _knobBackColor = value;
-
- SetDimensions();
-
- // Redraw
- Invalidate();
- }
- }
-
- ///
- /// How many divisions of maximum?
- ///
- [Description("Set the number of intervals between minimum and maximum")]
- [Category("KnobControl")]
- public int ScaleDivisions
- {
- get { return _scaleDivisions; }
- set
- {
- if (value > 1)
- {
- _scaleDivisions = value;
- // Redraw
- Invalidate();
- }
- }
- }
-
- ///
- /// How many subdivisions for each division
- ///
- [Description("Set the number of subdivisions between main divisions of graduation.")]
- [Category("KnobControl")]
- public int ScaleSubDivisions
- {
- get { return _scaleSubDivisions; }
- set
- {
- if (value > 0 && _scaleDivisions > 0 && (_maximum - _minimum) / (value * _scaleDivisions) > 0)
- {
- _scaleSubDivisions = value;
- // Redraw
- Invalidate();
- }
- }
- }
-
- ///
- /// Shows Small Scale marking.
- ///
- [Description("Show or hide subdivisions of graduations")]
- [Category("KnobControl")]
- public bool ShowSmallScale
- {
- get { return _showSmallScale; }
- set
- {
- if (value == true)
- {
- if (_scaleDivisions > 0 && _scaleSubDivisions > 0 && (_maximum - _minimum) / (_scaleSubDivisions * _scaleDivisions) > 0)
- {
- _showSmallScale = value;
- // Redraw
- Invalidate();
- }
- }
- else
- {
- _showSmallScale = value;
- // Redraw
- Invalidate();
- }
- }
- }
-
- ///
- /// Shows Large Scale marking
- ///
- [Description("Show or hide graduations")]
- [Category("KnobControl")]
- public bool ShowLargeScale
- {
- get { return _showLargeScale; }
- set
- {
- _showLargeScale = value;
- // need to redraw
- SetDimensions();
- // Redraw
- Invalidate();
- }
- }
-
- ///
- /// Minimum Value for knob Control
- ///
- [Description("set the minimum value for the knob control")]
- [Category("KnobControl")]
- public int Minimum
- {
- get { return _minimum; }
- set
- {
- _minimum = value;
- // Redraw
- Invalidate();
- }
- }
-
- ///
- /// Maximum value for knob control
- ///
- [Description("set the maximum value for the knob control")]
- [Category("KnobControl")]
- public int Maximum
- {
- get { return _maximum; }
- set
- {
- if (value > _minimum)
- {
- _maximum = value;
-
- if (_scaleSubDivisions > 0 && _scaleDivisions > 0 && (_maximum - _minimum) / (_scaleSubDivisions * _scaleDivisions) <= 0)
- {
- _showSmallScale = false;
- }
-
- SetDimensions();
- // Redraw
- Invalidate();
- }
- }
- }
-
- ///
- /// value set for large change
- ///
- [Description("set the value for the large changes")]
- [Category("KnobControl")]
- public int LargeChange
- {
- get { return _LargeChange; }
- set
- {
- _LargeChange = value;
- // Redraw
- Invalidate();
- }
- }
-
- ///
- /// value set for small change.
- ///
- [Description("set the minimum value for the small changes")]
- [Category("KnobControl")]
- public int SmallChange
- {
- get { return _SmallChange; }
- set
- {
- _SmallChange = value;
- // Redraw
- Invalidate();
- }
- }
-
- ///
- /// Current Value of knob control
- ///
- [Description("set the current value of the knob control")]
- [Category("KnobControl")]
- public int Value
- {
- get { return _Value; }
- set
- {
- if (value >= _minimum && value <= _maximum)
- {
- _Value = value;
- // Redraw
- Invalidate();
- // call delegate
- OnValueChanged(this);
- }
- }
- }
-
- ///
- /// Color of the button
- ///
- [Description("set the color of the pointer")]
- [Category("KnobControl")]
- public Color PointerColor
- {
- get { return _PointerColor; }
- set
- {
- _PointerColor = value;
-
- SetDimensions();
-
- // Redraw
- Invalidate();
- }
- }
-
- #endregion properties
-
- ~UIKnob()
- {
- DottedPen?.Dispose();
- knobFont?.Dispose();
- brushKnob?.Dispose();
- brushKnobPointer.Dispose();
- gOffScreen?.Dispose();
- OffScreenImage?.Dispose();
- _scaleFont?.Dispose();
- }
-
- public UIKnob()
- {
- // This call is required by the Windows.Forms Form Designer.
- DottedPen = new Pen(GetDarkColor(this.BackColor, 40))
- {
- DashStyle = System.Drawing.Drawing2D.DashStyle.Dash,
- DashCap = System.Drawing.Drawing2D.DashCap.Flat
- };
-
- InitializeComponent();
-
- knobFont = new Font(this.Font.FontFamily, this.Font.Size);
- _scaleFont = new Font(this.Font.FontFamily, this.Font.Size);
-
- // Properties initialisation
- // "start angle" and "end angle" possible values:
- // 90 = bottom (minimum value for "start angle")
- // 180 = left
- // 270 = top
- // 360 = right
- // 450 = bottom again (maximum value for "end angle")
- // So the couple (90, 450) will give an entire circle and the couple (180, 360) will give half a circle.
-
- _startAngle = 135;
- _endAngle = 405;
- deltaAngle = _endAngle - _startAngle;
-
- _minimum = 0;
- _maximum = 100;
- _scaleDivisions = 11;
- _scaleSubDivisions = 4;
- _mouseWheelBarPartitions = 10;
-
- _scaleColor = Color.Black;
- _knobBackColor = Color.White;
-
- SetDimensions();
-
- Version = UIGlobal.Version;
- AutoScaleMode = AutoScaleMode.None;
- }
-
- #region override
-
- ///
- /// Paint event: draw all
- ///
- ///
- protected override void OnPaint(PaintEventArgs e)
- {
- Graphics g = e.Graphics;
- gOffScreen.SetHighQuality();
- g.SetHighQuality();
-
- // Set background color of Image...
- gOffScreen.Clear(this.BackColor);
- // Fill knob Background to give knob effect....
- gOffScreen.FillEllipse(brushKnob, rKnob);
- // Set antialias effect on
- gOffScreen.SmoothingMode = SmoothingMode.AntiAlias;
- // Draw border of knob
- gOffScreen.DrawEllipse(this.BackColor, rKnob);
-
- //if control is focused
- if (this.isFocused)
- {
- gOffScreen.DrawEllipse(DottedPen, rKnob);
- }
-
- // DrawPointer
- DrawPointer(gOffScreen);
-
- //---------------------------------------------
- // draw small and large scale
- //---------------------------------------------
- DrawDivisions(gOffScreen, rKnob);
-
- // Draw image on screen
- g.DrawImage(OffScreenImage, 0, 0);
- }
-
- protected override void OnPaintBackground(PaintEventArgs e)
- {
- // Empty To avoid Flickring due do background Drawing.
- }
-
- ///
- /// Mouse down event: select control
- ///
- ///
- protected override void OnMouseDown(MouseEventArgs e)
- {
- if (IsPointinRectangle(new Point(e.X, e.Y), rKnob))
- {
- if (isFocused)
- {
- // was already selected
- // Start Rotation of knob only if it was selected before
- isKnobRotating = true;
- }
- else
- {
- // Was not selected before => select it
- Focus();
- isFocused = true;
- isKnobRotating = false; // disallow rotation, must click again
- // draw dotted border to show that it is selected
- Invalidate();
- }
- }
- }
-
- //----------------------------------------------------------
- // we need to override IsInputKey method to allow user to
- // use up, down, right and bottom keys other wise using this
- // keys will change focus from current object to another
- // object on the form
- //----------------------------------------------------------
- protected override bool IsInputKey(Keys key)
- {
- switch (key)
- {
- case Keys.Up:
- case Keys.Down:
- case Keys.Right:
- case Keys.Left:
- return true;
- }
-
- return base.IsInputKey(key);
- }
-
- ///
- /// Mouse up event: display new value
- ///
- ///
- protected override void OnMouseUp(MouseEventArgs e)
- {
- if (IsPointinRectangle(new Point(e.X, e.Y), rKnob))
- {
- if (isFocused == true && isKnobRotating == true)
- {
- // Change value is allowed only only after 2nd click
- this.Value = this.GetValueFromPosition(new Point(e.X, e.Y));
- }
- else
- {
- // 1st click = only focus
- isFocused = true;
- isKnobRotating = true;
- }
- }
-
- this.Cursor = Cursors.Default;
- }
-
- ///
- /// Mouse move event: drag the pointer to the mouse position
- ///
- ///
- protected override void OnMouseMove(MouseEventArgs e)
- {
- //--------------------------------------
- // Following Handles Knob Rotating
- //--------------------------------------
- if (e.Button == MouseButtons.Left && this.isKnobRotating == true)
- {
- this.Cursor = Cursors.Hand;
- Point p = new Point(e.X, e.Y);
- int posVal = this.GetValueFromPosition(p);
- Value = posVal;
- }
- }
-
- ///
- /// Mousewheel: change value
- ///
- ///
- protected override void OnMouseWheel(MouseEventArgs e)
- {
- base.OnMouseWheel(e);
-
- if (isFocused && isKnobRotating && IsPointinRectangle(new Point(e.X, e.Y), rKnob))
- {
- // the Delta value is always 120, as explained in MSDN
- int v = (e.Delta / 120) * (_maximum - _minimum) / _mouseWheelBarPartitions;
- SetProperValue(Value + v);
-
- // Avoid to send MouseWheel event to the parent container
- ((HandledMouseEventArgs)e).Handled = true;
- }
- }
-
- ///
- /// Leave event: disallow knob rotation
- ///
- ///
- protected override void OnLeave(EventArgs e)
- {
- // unselect the control (remove dotted border)
- isFocused = false;
- isKnobRotating = false;
- Invalidate();
-
- base.OnLeave(new EventArgs());
- }
-
- ///
- /// Key down event: change value
- ///
- ///
- protected override void OnKeyDown(KeyEventArgs e)
- {
- if (isFocused)
- {
- //--------------------------------------------------------
- // Handles knob rotation with up,down,left and right keys
- //--------------------------------------------------------
- if (e.KeyCode == Keys.Up || e.KeyCode == Keys.Right)
- {
- if (_Value < _maximum) Value = _Value + 1;
- this.Refresh();
- }
- else if (e.KeyCode == Keys.Down || e.KeyCode == Keys.Left)
- {
- if (_Value > _minimum) Value = _Value - 1;
- this.Refresh();
- }
- }
- }
-
- ///
- /// Clean up any resources being used.
- ///
- protected override void Dispose(bool disposing)
- {
- if (disposing)
- {
- if (components != null)
- {
- components.Dispose();
- }
- }
-
- base.Dispose(disposing);
- }
-
- #endregion
-
- #region Component Designer generated code
- ///
- /// Required method for Designer support - do not modify
- /// the contents of this method with the code editor.
- ///
- private void InitializeComponent()
- {
- //
- // KnobControl
- //
- this.Name = "KnobControl";
- this.Resize += new System.EventHandler(this.KnobControl_Resize);
- }
-
- #endregion
-
- #region Draw
-
- ///
- /// Draw the pointer of the knob (a small button inside the main button)
- ///
- ///
- private void DrawPointer(Graphics Gr)
- {
- try
- {
- float radius = (float)(rKnob.Width / 2);
-
- // Draw a line
- if (_knobPointerStyle == KnobPointerStyles.line)
- {
- int l = (int)radius / 2;
- int w = l / 4;
- Point[] pt = GetKnobLine(Gr, l);
-
- using Pen pen = new Pen(_PointerColor, w);
- Gr.DrawLine(pen, pt[0], pt[1]);
- }
- else
- {
- // Draw a circle
- int w = 0;
- int h = 0;
- int l = 0;
-
- string strvalmax = _maximum.ToString();
- string strvalmin = _minimum.ToString();
- string strval = strvalmax.Length > strvalmin.Length ? strvalmax : strvalmin;
- double val = Convert.ToDouble(strval);
- String str = String.Format("{0,0:D}", (int)val);
-
- float fSize;
- SizeF strsize;
- if (_scaleFontAutoSize)
- {
- // Use font family = _scaleFont, but size = automatic
- fSize = (float)(6F * drawRatio);
- if (fSize < 6) fSize = 6;
- strsize = TextRenderer.MeasureText(str, new Font(_scaleFont.FontFamily, fSize));
- }
- else
- {
- // Use font family = _scaleFont, but size = fixed
- fSize = _scaleFont.Size;
- strsize = TextRenderer.MeasureText(str, _scaleFont);
- }
-
- int strw = (int)strsize.Width;
- int strh = (int)strsize.Height;
- w = Math.Max(strw, strh);
- // radius of small circle
- l = (int)radius - w / 2;
-
- h = w;
-
- Point Arrow = this.GetKnobPosition(l - 2); // Remove 2 pixels to offset the small circle inside the knob
-
- // Draw pointer arrow that shows knob position
- Rectangle rPointer = new Rectangle(Arrow.X - w / 2, Arrow.Y - w / 2, w, h);
-
- using Pen pen = new Pen(GetLightColor(_PointerColor, 55));
- DrawInsetCircle(ref Gr, rPointer, pen);
- Gr.FillEllipse(brushKnobPointer, rPointer);
- }
- }
- catch (Exception ex)
- {
- Console.Write(ex.Message);
- }
- }
-
- ///
- /// Draw graduations
- ///
- ///
- /// Knob rectangle
- ///
- private bool DrawDivisions(Graphics Gr, RectangleF rc)
- {
- if (this == null)
- return false;
-
- float cx = pKnob.X;
- float cy = pKnob.Y;
-
- float w = rc.Width;
- float h = rc.Height;
-
- float tx;
- float ty;
-
- float incr = GetRadian((_endAngle - _startAngle) / ((_scaleDivisions - 1) * (_scaleSubDivisions + 1)));
- float currentAngle = GetRadian(_startAngle);
-
- float radius = (float)(rc.Width / 2);
- float rulerValue = (float)_minimum;
-
- using Pen penL = new Pen(_scaleColor, (2 * drawRatio));
- using Pen penS = new Pen(_scaleColor, (1 * drawRatio));
- using SolidBrush br = new SolidBrush(_scaleColor);
-
- PointF ptStart = new PointF(0, 0);
- PointF ptEnd = new PointF(0, 0);
- int n = 0;
-
- if (_showLargeScale)
- {
- // Size of maxi string
- string strvalmax = _maximum.ToString();
- string strvalmin = _minimum.ToString();
- string strval = strvalmax.Length > strvalmin.Length ? strvalmax : strvalmin;
- double val = Convert.ToDouble(strval);
- //double val = _maximum;
- String str = String.Format("{0,0:D}", (int)val);
- float fSize;
- SizeF strsize;
-
- if (_scaleFontAutoSize)
- {
- fSize = (float)(6F * drawRatio);
- if (fSize < 6)
- fSize = 6;
- }
- else
- {
- fSize = _scaleFont.Size;
- }
-
- using var font = new Font(_scaleFont.FontFamily, fSize);
- strsize = TextRenderer.MeasureText(str, font);
-
- int strw = (int)strsize.Width;
- int strh = (int)strsize.Height;
- int wmax = Math.Max(strw, strh);
-
- float l = 0;
- gradLength = 2 * drawRatio;
-
- for (; n < _scaleDivisions; n++)
- {
- // draw divisions
- ptStart.X = (float)(cx + (radius) * Math.Cos(currentAngle));
- ptStart.Y = (float)(cy + (radius) * Math.Sin(currentAngle));
-
- ptEnd.X = (float)(cx + (radius + gradLength) * Math.Cos(currentAngle));
- ptEnd.Y = (float)(cy + (radius + gradLength) * Math.Sin(currentAngle));
-
- Gr.DrawLine(penL, ptStart, ptEnd);
-
- //Draw graduation values
- val = Math.Round(rulerValue);
- str = String.Format("{0,0:D}", (int)val);
-
- // If autosize
- using Font tmpFont = _scaleFontAutoSize ? new Font(_scaleFont.FontFamily, fSize) : new Font(_scaleFont.FontFamily, _scaleFont.Size);
- strsize = TextRenderer.MeasureText(str, tmpFont);
-
- if (_drawDivInside)
- {
- // graduations values inside the knob
- l = (int)radius - (wmax / 2) - 2;
-
- tx = (float)(cx + l * Math.Cos(currentAngle));
- ty = (float)(cy + l * Math.Sin(currentAngle));
- }
- else
- {
- // graduation values outside the knob
- //l = (Width / 2) - (wmax / 2) ;
- l = radius + gradLength + wmax / 2;
-
- tx = (float)(cx + l * Math.Cos(currentAngle));
- ty = (float)(cy + l * Math.Sin(currentAngle));
- }
-
- Gr.DrawString(str,
- font,
- br,
- tx - (float)(strsize.Width * 0.5),
- ty - (float)(strsize.Height * 0.5));
-
- rulerValue += (float)((_maximum - _minimum) / (_scaleDivisions - 1));
-
- if (n == _scaleDivisions - 1)
- {
- break;
- }
-
- // Subdivisions
- #region SubDivisions
-
- if (_scaleDivisions <= 0)
- {
- currentAngle += incr;
- }
- else
- {
- for (int j = 0; j <= _scaleSubDivisions; j++)
- {
- currentAngle += incr;
-
- // if user want to display small graduations
- if (_showSmallScale)
- {
- ptStart.X = (float)(cx + radius * Math.Cos(currentAngle));
- ptStart.Y = (float)(cy + radius * Math.Sin(currentAngle));
- ptEnd.X = (float)(cx + (radius + gradLength / 2) * Math.Cos(currentAngle));
- ptEnd.Y = (float)(cy + (radius + gradLength / 2) * Math.Sin(currentAngle));
-
- Gr.DrawLine(penS, ptStart, ptEnd);
- }
- }
- }
-
- #endregion
- }
- }
-
- return true;
- }
-
- ///
- /// Set position of button inside its rectangle to insure that divisions will fit.
- ///
- private void SetDimensions()
- {
- // Rectangle
- float x, y, w, h;
- x = 0;
- y = 0;
- w = h = Width;
-
- // Calculate ratio
- drawRatio = w / 150;
- if (drawRatio == 0.0)
- drawRatio = 1;
-
- if (_showLargeScale)
- {
- using Graphics Gr = this.CreateGraphics();
- string strvalmax = _maximum.ToString();
- string strvalmin = _minimum.ToString();
- string strval = strvalmax.Length > strvalmin.Length ? strvalmax : strvalmin;
- double val = Convert.ToDouble(strval);
-
- //double val = _maximum;
- String str = String.Format("{0,0:D}", (int)val);
-
- float fSize = _scaleFont.Size;
- Font font;
- if (_scaleFontAutoSize)
- {
- fSize = (float)(6F * drawRatio);
- if (fSize < 6)
- fSize = 6;
- font = new Font(_scaleFont.FontFamily, fSize);
- }
- else
- {
- fSize = _scaleFont.Size;
- font = new Font(_scaleFont.FontFamily, _scaleFont.Size);
- }
-
- SizeF strsize = TextRenderer.MeasureText(str, font);
- font.Dispose();
-
- // Graduations outside
- gradLength = 4 * drawRatio;
-
- if (_drawDivInside)
- {
- // Graduations inside : remove only 2*8 pixels
- //x = y = 8;
- x = y = gradLength;
- w = Width - 2 * x;
- }
- else
- {
- // remove 2 * size of text and length of graduation
- //gradLength = 4 * drawRatio;
- int strw = (int)strsize.Width;
- int strh = (int)strsize.Height;
-
- int max = Math.Max(strw, strh);
- x = max;
- y = max;
- w = (int)(Width - 2 * max - gradLength);
- }
-
- if (w <= 0) w = 1;
- h = w;
-
- // Rectangle of the rounded knob
- this.rKnob = new Rectangle((int)x, (int)y, (int)w, (int)h);
- }
- else
- {
- this.rKnob = new Rectangle(0, 0, Width, Height);
- }
-
- // Center of knob
- this.pKnob = new Point(rKnob.X + rKnob.Width / 2, rKnob.Y + rKnob.Height / 2);
-
- // create offscreen image
- this.OffScreenImage = new Bitmap(this.Width, this.Height);
- // create offscreen graphics
- this.gOffScreen = Graphics.FromImage(OffScreenImage);
-
- // Depends on retangle dimensions
- // create LinearGradientBrush for creating knob
- brushKnob = new LinearGradientBrush(
- rKnob, GetLightColor(_knobBackColor, 55), GetDarkColor(_knobBackColor, 55), LinearGradientMode.ForwardDiagonal);
-
- // create LinearGradientBrush for knobPointer
- brushKnobPointer = new LinearGradientBrush(
- rKnob, GetLightColor(_PointerColor, 55), GetDarkColor(_PointerColor, 55), LinearGradientMode.ForwardDiagonal);
- }
-
- #endregion
-
- #region resize
-
- ///
- /// Resize event
- ///
- ///
- ///
- private void KnobControl_Resize(object sender, System.EventArgs e)
- {
- // Control remains square
- Height = Width;
-
- SetDimensions();
- Invalidate();
- }
-
- #endregion
-
- #region private functions
-
- ///
- /// Sets the trackbar value so that it wont exceed allowed range.
- ///
- /// The value.
- private void SetProperValue(int val)
- {
- if (val < _minimum) Value = _minimum;
- else if (val > _maximum) Value = _maximum;
- else Value = val;
- }
-
- ///
- /// gets knob position that is to be drawn on control minus a small amount in order that the knob position stay inside the circle.
- ///
- /// Point that describes current knob position
- private Point GetKnobPosition(int l)
- {
- float cx = pKnob.X;
- float cy = pKnob.Y;
-
- // FAB: 21/08/18
- float degree = deltaAngle * (this.Value - _minimum) / (_maximum - _minimum);
-
- degree = GetRadian(degree + _startAngle);
-
- Point Pos = new Point(0, 0)
- {
- X = (int)(cx + l * Math.Cos(degree)),
- Y = (int)(cy + l * Math.Sin(degree))
- };
-
- return Pos;
- }
-
- ///
- /// return 2 points of a line starting from the center of the knob to the periphery
- ///
- ///
- ///
- private Point[] GetKnobLine(Graphics Gr, int l)
- {
- Point[] pret = new Point[2];
-
- float cx = pKnob.X;
- float cy = pKnob.Y;
-
- float radius = (float)(rKnob.Width / 2);
-
- // FAB: 21/08/18
- float degree = deltaAngle * (this.Value - _minimum) / (_maximum - _minimum);
-
- degree = GetRadian(degree + _startAngle);
-
- double val = _maximum;
- String str = String.Format("{0,0:D}", (int)val);
- float fSize;
- SizeF strsize;
-
- if (!_scaleFontAutoSize)
- {
- fSize = _scaleFont.Size;
- strsize = TextRenderer.MeasureText(str, _scaleFont);
- }
- else
- {
- fSize = (float)(6F * drawRatio);
- if (fSize < 6)
- fSize = 6;
-
- knobFont = new Font(_scaleFont.FontFamily, fSize);
- strsize = TextRenderer.MeasureText(str, knobFont);
- }
-
- int strw = (int)strsize.Width;
- int strh = (int)strsize.Height;
- int w = Math.Max(strw, strh);
-
- Point Pos = new Point(0, 0);
-
- if (_drawDivInside)
- {
- // Center (from)
- Pos.X = (int)(cx + (radius / 10) * Math.Cos(degree));
- Pos.Y = (int)(cy + (radius / 10) * Math.Sin(degree));
- pret[0] = new Point(Pos.X, Pos.Y);
-
- // External (to)
- Pos.X = (int)(cx + (radius - w) * Math.Cos(degree));
- Pos.Y = (int)(cy + (radius - w) * Math.Sin(degree));
- pret[1] = new Point(Pos.X, Pos.Y);
- }
- else
- {
- // Internal (from)
- Pos.X = (int)(cx + (radius - drawRatio * 10 - l) * Math.Cos(degree));
- Pos.Y = (int)(cy + (radius - drawRatio * 10 - l) * Math.Sin(degree));
-
- pret[0] = new Point(Pos.X, Pos.Y);
-
- // External (to)
- Pos.X = (int)(cx + (radius - 4) * Math.Cos(degree));
- Pos.Y = (int)(cy + (radius - 4) * Math.Sin(degree));
-
- pret[1] = new Point(Pos.X, Pos.Y);
- }
-
- return pret;
- }
-
- ///
- /// converts geometrical position into value..
- ///
- /// Point that is to be converted
- /// Value derived from position
- private int GetValueFromPosition(Point p)
- {
- float degree = 0;
- int v = 0;
-
- if (p.X <= pKnob.X)
- {
- degree = (float)(pKnob.Y - p.Y) / (float)(pKnob.X - p.X);
- degree = (float)Math.Atan(degree);
- degree = (degree) * (float)(180 / Math.PI) + (180 - _startAngle);
- }
- else if (p.X > pKnob.X)
- {
- degree = (float)(p.Y - pKnob.Y) / (float)(p.X - pKnob.X);
- degree = (float)Math.Atan(degree);
- degree = (degree) * (float)(180 / Math.PI) + 360 - _startAngle;
- }
-
- // round to the nearest value (when you click just before or after a graduation!)
- // FAB: 25/08/18
- v = _minimum + (int)Math.Round(degree * (_maximum - _minimum) / deltaAngle);
-
- if (v > _maximum) v = _maximum;
- if (v < _minimum) v = _minimum;
- return v;
- }
-
- #endregion
-
- private float DefaultFontSize = -1;
-
- public void SetDPIScale()
- {
- if (!UIDPIScale.NeedSetDPIFont()) return;
- if (DefaultFontSize < 0) DefaultFontSize = this.Font.Size;
- this.SetDPIScaleFont(DefaultFontSize);
- }
-
- public string Version
- {
- get;
- }
-
- ///
- /// Tag字符串
- ///
- [DefaultValue(null)]
- [Description("获取或设置包含有关控件的数据的对象字符串"), Category("SunnyUI")]
- public string TagString
- {
- get; set;
- }
-
- ///
- /// 自定义主题风格
- ///
- [DefaultValue(false), Browsable(false)]
- [Description("获取或设置可以自定义主题风格"), Category("SunnyUI")]
- public bool StyleCustomMode { get; set; }
-
- protected UIStyle _style = UIStyle.Inherited;
-
- ///
- /// 主题样式
- ///
- [DefaultValue(UIStyle.Inherited), Description("主题样式"), Category("SunnyUI")]
- public UIStyle Style
- {
- get => _style;
- set => SetStyle(value);
- }
-
- ///
- /// 设置主题样式
- ///
- /// 主题样式
- private void SetStyle(UIStyle style)
- {
- if (!style.IsCustom())
- {
- SetStyleColor(style.Colors());
- Invalidate();
- }
-
- _style = style == UIStyle.Inherited ? UIStyle.Inherited : UIStyle.Custom;
- }
-
- public void SetInheritedStyle(UIStyle style)
- {
- SetStyle(style);
- _style = UIStyle.Inherited;
- }
-
- public virtual void SetStyleColor(UIBaseStyle uiColor)
- {
-
- }
-
- ///
- /// 禁止控件跟随窗体缩放
- ///
- [DefaultValue(false), Category("SunnyUI"), Description("禁止控件跟随窗体缩放")]
- public bool ZoomScaleDisabled { get; set; }
-
- ///
- /// 控件缩放前在其容器里的位置
- ///
- [Browsable(false), DefaultValue(typeof(Rectangle), "0, 0, 0, 0")]
- public Rectangle ZoomScaleRect { get; set; }
-
- ///
- /// 设置控件缩放比例
- ///
- /// 缩放比例
- public virtual void SetZoomScale(float scale)
- {
-
- }
-
- #region Utility
-
- public static float GetRadian(float val)
- {
- return (float)(val * Math.PI / 180);
- }
-
- public static Color GetDarkColor(Color c, byte d)
- {
- byte r = 0;
- byte g = 0;
- byte b = 0;
-
- if (c.R > d) r = (byte)(c.R - d);
- if (c.G > d) g = (byte)(c.G - d);
- if (c.B > d) b = (byte)(c.B - d);
-
- Color c1 = Color.FromArgb(r, g, b);
- return c1;
- }
-
- public static Color GetLightColor(Color c, byte d)
- {
- byte r = 255;
- byte g = 255;
- byte b = 255;
-
- if (c.R + d < 255) r = (byte)(c.R + d);
- if (c.G + d < 255) g = (byte)(c.G + d);
- if (c.B + d < 255) b = (byte)(c.B + d);
-
- Color c2 = Color.FromArgb(r, g, b);
- return c2;
- }
-
- ///
- /// Method which checks is particular point is in rectangle
- ///
- /// Point to be Chaecked
- /// Rectangle
- /// true is Point is in rectangle, else false
- public static bool IsPointinRectangle(Point p, Rectangle r)
- {
- bool flag = false;
- if (p.X > r.X && p.X < r.X + r.Width && p.Y > r.Y && p.Y < r.Y + r.Height)
- {
- flag = true;
- }
-
- return flag;
-
- }
- public static void DrawInsetCircle(ref Graphics g, Rectangle r, Pen p)
- {
- using Pen p1 = new Pen(GetDarkColor(p.Color, 50));
- using Pen p2 = new Pen(GetLightColor(p.Color, 50));
- for (int i = 0; i < p.Width; i++)
- {
- Rectangle r1 = new Rectangle(r.X + i, r.Y + i, r.Width - i * 2, r.Height - i * 2);
- g.DrawArc(p2, r1, -45, 180);
- g.DrawArc(p1, r1, 135, 180);
- }
- }
-
- #endregion
- }
-}
\ No newline at end of file
diff --git a/SunnyUI/Controls/UIKnobControl.resx b/SunnyUI/Controls/UIKnobControl.resx
deleted file mode 100644
index 1af7de15..00000000
--- a/SunnyUI/Controls/UIKnobControl.resx
+++ /dev/null
@@ -1,120 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- text/microsoft-resx
-
-
- 2.0
-
-
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
\ No newline at end of file
diff --git a/SunnyUI/Forms/UILoginForm.Designer.cs b/SunnyUI/Forms/UILoginForm.Designer.cs
index 6139be38..e66105cc 100644
--- a/SunnyUI/Forms/UILoginForm.Designer.cs
+++ b/SunnyUI/Forms/UILoginForm.Designer.cs
@@ -54,16 +54,14 @@
// uiLine1
//
uiLine1.BackColor = System.Drawing.Color.Transparent;
- uiLine1.FillColor = System.Drawing.Color.White;
uiLine1.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
- uiLine1.LineColor2 = System.Drawing.Color.FromArgb(80, 160, 255);
+ uiLine1.ForeColor = System.Drawing.Color.FromArgb(48, 48, 48);
uiLine1.Location = new System.Drawing.Point(4, 85);
uiLine1.MinimumSize = new System.Drawing.Size(2, 2);
uiLine1.Name = "uiLine1";
uiLine1.RadiusSides = UICornerRadiusSides.None;
uiLine1.RectSides = System.Windows.Forms.ToolStripStatusLabelBorderSides.None;
uiLine1.Size = new System.Drawing.Size(182, 28);
- uiLine1.Style = UIStyle.Custom;
uiLine1.StyleCustomMode = true;
uiLine1.TabIndex = 5;
uiLine1.Text = "用户登录";
@@ -117,6 +115,7 @@
btnLogin.Size = new System.Drawing.Size(86, 29);
btnLogin.TabIndex = 2;
btnLogin.Text = "登录";
+ btnLogin.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
btnLogin.Click += btnLogin_Click;
//
// btnCancel
@@ -143,6 +142,7 @@
btnCancel.Symbol = 61453;
btnCancel.TabIndex = 3;
btnCancel.Text = "取消";
+ btnCancel.TipsFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
btnCancel.Click += btnCancel_Click;
//
// lblTitle
@@ -164,6 +164,7 @@
lblSubText.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right;
lblSubText.BackColor = System.Drawing.Color.Transparent;
lblSubText.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
+ lblSubText.ForeColor = System.Drawing.Color.FromArgb(48, 48, 48);
lblSubText.Location = new System.Drawing.Point(426, 421);
lblSubText.Name = "lblSubText";
lblSubText.Size = new System.Drawing.Size(310, 26);
diff --git a/SunnyUI/Style/UIStyles.cs b/SunnyUI/Style/UIStyles.cs
index 2ab118ea..57fd1cdc 100644
--- a/SunnyUI/Style/UIStyles.cs
+++ b/SunnyUI/Style/UIStyles.cs
@@ -201,8 +201,7 @@ namespace Sunny.UI
public static void InitColorful(Color styleColor, Color foreColor)
{
Colorful.Init(styleColor, foreColor);
- Style = UIStyle.Colorful;
- SetStyle(Style);
+ SetStyle(UIStyle.Colorful);
}
private static readonly ConcurrentDictionary Styles = new ConcurrentDictionary();
@@ -394,7 +393,7 @@ namespace Sunny.UI
/// 主题样式
public static void SetStyle(UIStyle style)
{
- if (Style == style) return;
+ if (style != UIStyle.Colorful && Style == style) return;
Style = style;
if (!style.IsValid()) return;