Added DarkRadioButton

This commit is contained in:
Robin 2015-12-07 15:49:58 +00:00
parent 11f45aaf3e
commit 22b9bb90cc
5 changed files with 457 additions and 17 deletions

View File

@ -9,6 +9,7 @@
public static int MinimumThumbSize = 11;
public static int CheckBoxSize = 12;
public static int RadioButtonSize = 12;
public const int ToolWindowHeaderSize = 25;
public const int DocumentTabAreaSize = 24;

View File

@ -1,5 +1,4 @@
using DarkUI.Config;
using DarkUI.Icons;
using System;
using System.ComponentModel;
using System.Drawing;
@ -291,7 +290,6 @@ namespace DarkUI.Controls
{
if (Focused)
{
textColor = Colors.BlueHighlight;
borderColor = Colors.BlueHighlight;
fillColor = Colors.BlueSelection;
}
@ -321,7 +319,7 @@ namespace DarkUI.Controls
using (var p = new Pen(borderColor))
{
var boxRect = new Rectangle(0, (rect.Height / 2) - (size / 2), size, size);
var boxRect = new Rectangle(0, (rect.Height / 2) - (size / 2) - 1, size, size);
g.DrawRectangle(p, boxRect);
}
@ -329,15 +327,21 @@ namespace DarkUI.Controls
{
using (var b = new SolidBrush(fillColor))
{
Rectangle boxRect = new Rectangle(2, (rect.Height / 2) - ((size - 4) / 2), size - 3, size - 3);
Rectangle boxRect = new Rectangle(2, (rect.Height / 2) - ((size - 4) / 2) - 1, size - 3, size - 3);
g.FillRectangle(b, boxRect);
}
}
using (var b = new SolidBrush(textColor))
{
var modRect = new Rectangle(size + 5, 0, rect.Width - (size + 5), rect.Height);
g.DrawString(Text, Font, b, modRect);
var stringFormat = new StringFormat
{
LineAlignment = StringAlignment.Near,
Alignment = StringAlignment.Center
};
var modRect = new Rectangle(size + 4, 0, rect.Width - size, rect.Height);
g.DrawString(Text, Font, b, modRect, stringFormat);
}
}

View File

@ -0,0 +1,348 @@
using DarkUI.Config;
using System;
using System.ComponentModel;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Windows.Forms;
namespace DarkUI.Controls
{
public class DarkRadioButton : RadioButton
{
#region Field Region
private DarkControlState _controlState = DarkControlState.Normal;
private bool _spacePressed;
#endregion
#region Property Region
[Browsable(false)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public new Appearance Appearance
{
get { return base.Appearance; }
}
[Browsable(false)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public new bool AutoEllipsis
{
get { return base.AutoEllipsis; }
}
[Browsable(false)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public new Image BackgroundImage
{
get { return base.BackgroundImage; }
}
[Browsable(false)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public new ImageLayout BackgroundImageLayout
{
get { return base.BackgroundImageLayout; }
}
[Browsable(false)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public new bool FlatAppearance
{
get { return false; }
}
[Browsable(false)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public new FlatStyle FlatStyle
{
get { return base.FlatStyle; }
}
[Browsable(false)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public new Image Image
{
get { return base.Image; }
}
[Browsable(false)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public new ContentAlignment ImageAlign
{
get { return base.ImageAlign; }
}
[Browsable(false)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public new int ImageIndex
{
get { return base.ImageIndex; }
}
[Browsable(false)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public new string ImageKey
{
get { return base.ImageKey; }
}
[Browsable(false)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public new ImageList ImageList
{
get { return base.ImageList; }
}
[Browsable(false)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public new ContentAlignment TextAlign
{
get { return base.TextAlign; }
}
[Browsable(false)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public new TextImageRelation TextImageRelation
{
get { return base.TextImageRelation; }
}
[Browsable(false)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public new bool UseCompatibleTextRendering
{
get { return false; }
}
[Browsable(false)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public new bool UseVisualStyleBackColor
{
get { return false; }
}
#endregion
#region Constructor Region
public DarkRadioButton()
{
SetStyle(ControlStyles.SupportsTransparentBackColor |
ControlStyles.OptimizedDoubleBuffer |
ControlStyles.ResizeRedraw |
ControlStyles.UserPaint, true);
}
#endregion
#region Method Region
private void SetControlState(DarkControlState controlState)
{
if (_controlState != controlState)
{
_controlState = controlState;
Invalidate();
}
}
#endregion
#region Event Handler Region
protected override void OnMouseMove(MouseEventArgs e)
{
base.OnMouseMove(e);
if (_spacePressed)
return;
if (e.Button == MouseButtons.Left)
{
if (ClientRectangle.Contains(e.Location))
SetControlState(DarkControlState.Pressed);
else
SetControlState(DarkControlState.Hover);
}
else
{
SetControlState(DarkControlState.Hover);
}
}
protected override void OnMouseDown(MouseEventArgs e)
{
base.OnMouseDown(e);
if (!ClientRectangle.Contains(e.Location))
return;
SetControlState(DarkControlState.Pressed);
}
protected override void OnMouseUp(MouseEventArgs e)
{
base.OnMouseUp(e);
if (_spacePressed)
return;
SetControlState(DarkControlState.Normal);
}
protected override void OnMouseLeave(EventArgs e)
{
base.OnMouseLeave(e);
if (_spacePressed)
return;
SetControlState(DarkControlState.Normal);
}
protected override void OnMouseCaptureChanged(EventArgs e)
{
base.OnMouseCaptureChanged(e);
if (_spacePressed)
return;
var location = Cursor.Position;
if (!ClientRectangle.Contains(location))
SetControlState(DarkControlState.Normal);
}
protected override void OnGotFocus(EventArgs e)
{
base.OnGotFocus(e);
Invalidate();
}
protected override void OnLostFocus(EventArgs e)
{
base.OnLostFocus(e);
_spacePressed = false;
var location = Cursor.Position;
if (!ClientRectangle.Contains(location))
SetControlState(DarkControlState.Normal);
else
SetControlState(DarkControlState.Hover);
}
protected override void OnKeyDown(KeyEventArgs e)
{
base.OnKeyDown(e);
if (e.KeyCode == Keys.Space)
{
_spacePressed = true;
SetControlState(DarkControlState.Pressed);
}
}
protected override void OnKeyUp(KeyEventArgs e)
{
base.OnKeyUp(e);
if (e.KeyCode == Keys.Space)
{
_spacePressed = false;
var location = Cursor.Position;
if (!ClientRectangle.Contains(location))
SetControlState(DarkControlState.Normal);
else
SetControlState(DarkControlState.Hover);
}
}
#endregion
#region Paint Region
protected override void OnPaint(PaintEventArgs e)
{
var g = e.Graphics;
var rect = new Rectangle(0, 0, ClientSize.Width, ClientSize.Height);
var size = Consts.RadioButtonSize;
var textColor = Colors.LightText;
var borderColor = Colors.LightText;
var fillColor = Colors.LightestBackground;
if (Enabled)
{
if (Focused)
{
borderColor = Colors.BlueHighlight;
fillColor = Colors.BlueSelection;
}
if (_controlState == DarkControlState.Hover)
{
borderColor = Colors.BlueHighlight;
fillColor = Colors.BlueSelection;
}
else if (_controlState == DarkControlState.Pressed)
{
borderColor = Colors.GreyHighlight;
fillColor = Colors.GreySelection;
}
}
else
{
textColor = Colors.DisabledText;
borderColor = Colors.GreyHighlight;
fillColor = Colors.GreySelection;
}
using (var b = new SolidBrush(Colors.GreyBackground))
{
g.FillRectangle(b, rect);
}
g.SmoothingMode = SmoothingMode.HighQuality;
using (var p = new Pen(borderColor))
{
var boxRect = new Rectangle(0, (rect.Height / 2) - (size / 2) - 1, size, size);
g.DrawEllipse(p, boxRect);
}
if (Checked)
{
using (var b = new SolidBrush(fillColor))
{
Rectangle boxRect = new Rectangle(3, (rect.Height / 2) - ((size - 7) / 2) - 2, size - 6, size - 6);
g.FillEllipse(b, boxRect);
}
}
g.SmoothingMode = SmoothingMode.Default;
using (var b = new SolidBrush(textColor))
{
var stringFormat = new StringFormat
{
LineAlignment = StringAlignment.Near,
Alignment = StringAlignment.Center
};
var modRect = new Rectangle(size + 4, 0, rect.Width - size, rect.Height);
g.DrawString(Text, Font, b, modRect, stringFormat);
}
}
#endregion
}
}

View File

@ -46,6 +46,9 @@
<Compile Include="Controls\DarkCheckBox.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="Controls\DarkRadioButton.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="Controls\DarkTreeView.cs">
<SubType>Component</SubType>
</Compile>

View File

@ -39,8 +39,14 @@ namespace Example
this.lstTest = new DarkUI.Controls.DarkListView();
this.pnlMessageBox = new DarkUI.Controls.DarkSectionPanel();
this.panel1 = new System.Windows.Forms.Panel();
this.panel5 = new System.Windows.Forms.Panel();
this.darkRadioButton3 = new DarkUI.Controls.DarkRadioButton();
this.darkRadioButton2 = new DarkUI.Controls.DarkRadioButton();
this.darkRadioButton1 = new DarkUI.Controls.DarkRadioButton();
this.panel4 = new System.Windows.Forms.Panel();
this.darkCheckBox2 = new DarkUI.Controls.DarkCheckBox();
this.darkCheckBox1 = new DarkUI.Controls.DarkCheckBox();
this.panel3 = new System.Windows.Forms.Panel();
this.btnMessageBox = new DarkUI.Controls.DarkButton();
this.panel2 = new System.Windows.Forms.Panel();
this.btnDialog = new DarkUI.Controls.DarkButton();
@ -50,6 +56,9 @@ namespace Example
this.pnlListView.SuspendLayout();
this.pnlMessageBox.SuspendLayout();
this.panel1.SuspendLayout();
this.panel5.SuspendLayout();
this.panel4.SuspendLayout();
this.panel3.SuspendLayout();
this.panel2.SuspendLayout();
this.SuspendLayout();
//
@ -137,9 +146,9 @@ namespace Example
//
// panel1
//
this.panel1.Controls.Add(this.darkCheckBox2);
this.panel1.Controls.Add(this.darkCheckBox1);
this.panel1.Controls.Add(this.btnMessageBox);
this.panel1.Controls.Add(this.panel5);
this.panel1.Controls.Add(this.panel4);
this.panel1.Controls.Add(this.panel3);
this.panel1.Controls.Add(this.panel2);
this.panel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.panel1.Location = new System.Drawing.Point(1, 25);
@ -148,35 +157,99 @@ namespace Example
this.panel1.Size = new System.Drawing.Size(220, 374);
this.panel1.TabIndex = 0;
//
// panel5
//
this.panel5.Controls.Add(this.darkRadioButton3);
this.panel5.Controls.Add(this.darkRadioButton2);
this.panel5.Controls.Add(this.darkRadioButton1);
this.panel5.Dock = System.Windows.Forms.DockStyle.Top;
this.panel5.Location = new System.Drawing.Point(10, 147);
this.panel5.Name = "panel5";
this.panel5.Size = new System.Drawing.Size(200, 100);
this.panel5.TabIndex = 12;
//
// darkRadioButton3
//
this.darkRadioButton3.AutoSize = true;
this.darkRadioButton3.Checked = true;
this.darkRadioButton3.Enabled = false;
this.darkRadioButton3.Location = new System.Drawing.Point(0, 50);
this.darkRadioButton3.Name = "darkRadioButton3";
this.darkRadioButton3.Size = new System.Drawing.Size(139, 19);
this.darkRadioButton3.TabIndex = 4;
this.darkRadioButton3.TabStop = true;
this.darkRadioButton3.Text = "Disabled radio button";
//
// darkRadioButton2
//
this.darkRadioButton2.AutoSize = true;
this.darkRadioButton2.Location = new System.Drawing.Point(0, 25);
this.darkRadioButton2.Name = "darkRadioButton2";
this.darkRadioButton2.Size = new System.Drawing.Size(94, 19);
this.darkRadioButton2.TabIndex = 3;
this.darkRadioButton2.Text = "Radio button";
//
// darkRadioButton1
//
this.darkRadioButton1.AutoSize = true;
this.darkRadioButton1.Location = new System.Drawing.Point(0, 0);
this.darkRadioButton1.Name = "darkRadioButton1";
this.darkRadioButton1.Size = new System.Drawing.Size(94, 19);
this.darkRadioButton1.TabIndex = 2;
this.darkRadioButton1.Text = "Radio button";
//
// panel4
//
this.panel4.AutoSize = true;
this.panel4.Controls.Add(this.darkCheckBox2);
this.panel4.Controls.Add(this.darkCheckBox1);
this.panel4.Dock = System.Windows.Forms.DockStyle.Top;
this.panel4.Location = new System.Drawing.Point(10, 90);
this.panel4.Name = "panel4";
this.panel4.Padding = new System.Windows.Forms.Padding(0, 0, 0, 10);
this.panel4.Size = new System.Drawing.Size(200, 57);
this.panel4.TabIndex = 11;
//
// darkCheckBox2
//
this.darkCheckBox2.AutoSize = true;
this.darkCheckBox2.Checked = true;
this.darkCheckBox2.CheckState = System.Windows.Forms.CheckState.Checked;
this.darkCheckBox2.Enabled = false;
this.darkCheckBox2.Location = new System.Drawing.Point(10, 111);
this.darkCheckBox2.Location = new System.Drawing.Point(0, 25);
this.darkCheckBox2.Name = "darkCheckBox2";
this.darkCheckBox2.Size = new System.Drawing.Size(124, 19);
this.darkCheckBox2.TabIndex = 9;
this.darkCheckBox2.TabIndex = 13;
this.darkCheckBox2.Text = "Disabled checkbox";
//
// darkCheckBox1
//
this.darkCheckBox1.AutoSize = true;
this.darkCheckBox1.Location = new System.Drawing.Point(10, 86);
this.darkCheckBox1.Location = new System.Drawing.Point(0, 0);
this.darkCheckBox1.Name = "darkCheckBox1";
this.darkCheckBox1.Size = new System.Drawing.Size(121, 19);
this.darkCheckBox1.TabIndex = 8;
this.darkCheckBox1.TabIndex = 12;
this.darkCheckBox1.Text = "Enabled checkbox";
//
// panel3
//
this.panel3.AutoSize = true;
this.panel3.Controls.Add(this.btnMessageBox);
this.panel3.Dock = System.Windows.Forms.DockStyle.Top;
this.panel3.Location = new System.Drawing.Point(10, 50);
this.panel3.Name = "panel3";
this.panel3.Padding = new System.Windows.Forms.Padding(0, 0, 0, 10);
this.panel3.Size = new System.Drawing.Size(200, 40);
this.panel3.TabIndex = 10;
//
// btnMessageBox
//
this.btnMessageBox.Dock = System.Windows.Forms.DockStyle.Top;
this.btnMessageBox.Location = new System.Drawing.Point(10, 50);
this.btnMessageBox.Location = new System.Drawing.Point(0, 0);
this.btnMessageBox.Name = "btnMessageBox";
this.btnMessageBox.Padding = new System.Windows.Forms.Padding(5);
this.btnMessageBox.Size = new System.Drawing.Size(200, 30);
this.btnMessageBox.TabIndex = 6;
this.btnMessageBox.TabIndex = 12;
this.btnMessageBox.Text = "Message Box";
//
// panel2
@ -217,6 +290,11 @@ namespace Example
this.pnlMessageBox.ResumeLayout(false);
this.panel1.ResumeLayout(false);
this.panel1.PerformLayout();
this.panel5.ResumeLayout(false);
this.panel5.PerformLayout();
this.panel4.ResumeLayout(false);
this.panel4.PerformLayout();
this.panel3.ResumeLayout(false);
this.panel2.ResumeLayout(false);
this.ResumeLayout(false);
@ -232,10 +310,16 @@ namespace Example
private DarkListView lstTest;
private DarkSectionPanel pnlMessageBox;
private System.Windows.Forms.Panel panel1;
private DarkButton btnMessageBox;
private System.Windows.Forms.Panel panel2;
private DarkButton btnDialog;
private DarkCheckBox darkCheckBox1;
private System.Windows.Forms.Panel panel4;
private System.Windows.Forms.Panel panel3;
private DarkButton btnMessageBox;
private DarkCheckBox darkCheckBox2;
private DarkCheckBox darkCheckBox1;
private System.Windows.Forms.Panel panel5;
private DarkRadioButton darkRadioButton2;
private DarkRadioButton darkRadioButton1;
private DarkRadioButton darkRadioButton3;
}
}