mirror of
https://github.com/colhountech/DarkUI.Net5.git
synced 2025-07-02 07:09:27 +03:00
101 lines
3.1 KiB
C#
101 lines
3.1 KiB
C#
using System.ComponentModel;
|
|
using System.Drawing;
|
|
using System.Windows.Forms;
|
|
|
|
namespace DarkUI
|
|
{
|
|
[ToolboxItem(false)]
|
|
public class DarkToolWindow : DarkDockContent
|
|
{
|
|
#region Property Region
|
|
|
|
[Browsable(false)]
|
|
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
|
|
public new Padding Padding
|
|
{
|
|
get { return base.Padding; }
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Constructor Region
|
|
|
|
public DarkToolWindow()
|
|
{
|
|
SetStyle(ControlStyles.OptimizedDoubleBuffer |
|
|
ControlStyles.ResizeRedraw |
|
|
ControlStyles.UserPaint, true);
|
|
|
|
BackColor = Colors.GreyBackground;
|
|
base.Padding = new Padding(0, Consts.ToolWindowHeaderSize, 0, 0);
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Paint Region
|
|
|
|
protected override void OnPaint(PaintEventArgs e)
|
|
{
|
|
var g = e.Graphics;
|
|
|
|
// Fill body
|
|
using (var b = new SolidBrush(Colors.GreyBackground))
|
|
{
|
|
g.FillRectangle(b, ClientRectangle);
|
|
}
|
|
|
|
// Draw header
|
|
var bgColor = IsActive ? Colors.BlueBackground : Colors.HeaderBackground;
|
|
var darkColor = IsActive ? Colors.DarkBlueBorder : Colors.DarkBorder;
|
|
var lightColor = IsActive ? Colors.LightBlueBorder : Colors.LightBorder;
|
|
|
|
using (var b = new SolidBrush(bgColor))
|
|
{
|
|
var bgRect = new Rectangle(0, 0, ClientRectangle.Width, Consts.ToolWindowHeaderSize);
|
|
g.FillRectangle(b, bgRect);
|
|
}
|
|
|
|
using (var p = new Pen(darkColor))
|
|
{
|
|
g.DrawLine(p, ClientRectangle.Left, 0, ClientRectangle.Right, 0);
|
|
g.DrawLine(p, ClientRectangle.Left, Consts.ToolWindowHeaderSize - 1, ClientRectangle.Right, Consts.ToolWindowHeaderSize - 1);
|
|
}
|
|
|
|
using (var p = new Pen(lightColor))
|
|
{
|
|
g.DrawLine(p, ClientRectangle.Left, 1, ClientRectangle.Right, 1);
|
|
}
|
|
|
|
var xOffset = 2;
|
|
|
|
if (Icon != null)
|
|
{
|
|
g.DrawImageUnscaled(Icon, ClientRectangle.Left + 5, ClientRectangle.Top + (Consts.ToolWindowHeaderSize / 2) - (Icon.Height / 2) + 1);
|
|
xOffset = Icon.Width + 8;
|
|
}
|
|
|
|
using (var b = new SolidBrush(Colors.LightText))
|
|
{
|
|
var textRect = new Rectangle(xOffset, 0, ClientRectangle.Width - 4 - xOffset, Consts.ToolWindowHeaderSize);
|
|
|
|
var format = new StringFormat
|
|
{
|
|
Alignment = StringAlignment.Near,
|
|
LineAlignment = StringAlignment.Center,
|
|
FormatFlags = StringFormatFlags.NoWrap,
|
|
Trimming = StringTrimming.EllipsisCharacter
|
|
};
|
|
|
|
g.DrawString(DockText, Font, b, textRect, format);
|
|
}
|
|
}
|
|
|
|
protected override void OnPaintBackground(PaintEventArgs e)
|
|
{
|
|
// Absorb event
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
}
|