mirror of
https://github.com/colhountech/DarkUI.Net5.git
synced 2024-10-17 15:26:49 +03:00
2246e6e645
Added toolstrip & menu renderers. Added extension methods for changing bitmap colours and upgraded to .NET 4.0 for easier implementation of these methods.
138 lines
4.2 KiB
C#
138 lines
4.2 KiB
C#
using System;
|
|
using System.Drawing;
|
|
using System.Windows.Forms;
|
|
|
|
namespace DarkUI
|
|
{
|
|
public class DarkMenuRenderer : ToolStripRenderer
|
|
{
|
|
#region Initialisation Region
|
|
|
|
protected override void Initialize(ToolStrip toolStrip)
|
|
{
|
|
base.Initialize(toolStrip);
|
|
|
|
toolStrip.BackColor = Colors.GreyBackground;
|
|
toolStrip.ForeColor = Colors.LightText;
|
|
}
|
|
|
|
protected override void InitializeItem(ToolStripItem item)
|
|
{
|
|
base.InitializeItem(item);
|
|
|
|
item.ForeColor = Colors.LightText;
|
|
|
|
if (item.GetType() == typeof(ToolStripSeparator))
|
|
{
|
|
item.Margin = new Padding(0, 0, 0, 1);
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Render Region
|
|
|
|
protected override void OnRenderToolStripBackground(ToolStripRenderEventArgs e)
|
|
{
|
|
var g = e.Graphics;
|
|
using (var b = new SolidBrush(Colors.GreyBackground))
|
|
{
|
|
g.FillRectangle(b, e.AffectedBounds);
|
|
}
|
|
}
|
|
|
|
protected override void OnRenderImageMargin(ToolStripRenderEventArgs e)
|
|
{
|
|
var g = e.Graphics;
|
|
|
|
var rect = new Rectangle(0, 0, e.ToolStrip.Width - 1, e.ToolStrip.Height - 1);
|
|
|
|
using (var p = new Pen(Colors.LightBorder))
|
|
{
|
|
g.DrawRectangle(p, rect);
|
|
}
|
|
}
|
|
|
|
protected override void OnRenderItemCheck(ToolStripItemImageRenderEventArgs e)
|
|
{
|
|
var g = e.Graphics;
|
|
|
|
var rect = new Rectangle(e.ImageRectangle.Left - 2, e.ImageRectangle.Top - 2,
|
|
e.ImageRectangle.Width + 4, e.ImageRectangle.Height + 4);
|
|
|
|
using (var b = new SolidBrush(Colors.LightBorder))
|
|
{
|
|
g.FillRectangle(b, rect);
|
|
}
|
|
|
|
using (var p = new Pen(Colors.BlueHighlight))
|
|
{
|
|
var modRect = new Rectangle(rect.Left, rect.Top, rect.Width - 1, rect.Height - 1);
|
|
g.DrawRectangle(p, modRect);
|
|
}
|
|
|
|
if (e.Item.ImageIndex == -1 && String.IsNullOrEmpty(e.Item.ImageKey) && e.Item.Image == null)
|
|
{
|
|
g.DrawImageUnscaled(MenuIcons.tick, new Point(e.ImageRectangle.Left, e.ImageRectangle.Top));
|
|
}
|
|
}
|
|
|
|
protected override void OnRenderSeparator(ToolStripSeparatorRenderEventArgs e)
|
|
{
|
|
var g = e.Graphics;
|
|
|
|
var rect = new Rectangle(1, 3, e.Item.Width, 1);
|
|
|
|
using (var b = new SolidBrush(Colors.LightBorder))
|
|
{
|
|
g.FillRectangle(b, rect);
|
|
}
|
|
}
|
|
|
|
protected override void OnRenderArrow(ToolStripArrowRenderEventArgs e)
|
|
{
|
|
e.ArrowColor = Colors.LightText;
|
|
e.ArrowRectangle = new Rectangle(new Point(e.ArrowRectangle.Left, e.ArrowRectangle.Top - 1), e.ArrowRectangle.Size);
|
|
|
|
base.OnRenderArrow(e);
|
|
}
|
|
|
|
protected override void OnRenderMenuItemBackground(ToolStripItemRenderEventArgs e)
|
|
{
|
|
var g = e.Graphics;
|
|
|
|
e.Item.ForeColor = e.Item.Enabled ? Colors.LightText : Colors.DisabledText;
|
|
|
|
if (e.Item.Enabled)
|
|
{
|
|
// Normal item
|
|
if (e.Item.Selected)
|
|
{
|
|
var rect = new Rectangle(2, 0, e.Item.Width - 3, e.Item.Height);
|
|
|
|
using (var b = new SolidBrush(Colors.GreySelection))
|
|
{
|
|
g.FillRectangle(b, rect);
|
|
}
|
|
}
|
|
|
|
// Header item on open menu
|
|
if (e.Item.GetType() == typeof(ToolStripMenuItem))
|
|
{
|
|
if (((ToolStripMenuItem)e.Item).DropDown.Visible && e.Item.IsOnDropDown == false)
|
|
{
|
|
var rect = new Rectangle(2, 0, e.Item.Width - 3, e.Item.Height);
|
|
|
|
using (var b = new SolidBrush(Colors.GreySelection))
|
|
{
|
|
g.FillRectangle(b, rect);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
}
|