📄 colorbutton.cs
字号:
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Georg Brandl" email="g.brandl(at)gmx.net"/>
// <version value="$version"/>
// </file>
using System;
using System.Windows.Forms;
using System.Drawing;
namespace ICSharpCode.SharpDevelop.Gui.Dialogs
{
public class ColorButton : Button
{
Color centerColor;
public ColorButton()
{
}
public Color CenterColor
{
get { return centerColor; }
set { centerColor = value; }
}
protected override void OnMouseEnter(EventArgs e)
{
base.OnMouseEnter(e);
Invalidate();
}
protected override void OnMouseLeave(EventArgs e)
{
base.OnMouseLeave(e);
Invalidate();
}
protected override void OnMouseUp(MouseEventArgs e)
{
base.OnMouseUp(e);
Invalidate();
}
protected override void OnEnabledChanged(EventArgs e)
{
base.OnEnabledChanged(e);
Invalidate();
}
protected override void OnClick(EventArgs e)
{
base.OnClick(e);
Point p = new Point(0, Height);
p = PointToScreen(p);
using (ColorPaletteDialog clDlg = new ColorPaletteDialog(p.X, p.Y)) {
clDlg.ShowDialog();
if (clDlg.DialogResult == DialogResult.OK) {
CenterColor = clDlg.Color;
}
}
}
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
Graphics g = e.Graphics;
Rectangle r = ClientRectangle;
byte border = 4;
byte right_border = 15;
Rectangle rc = new Rectangle(r.Left + border, r.Top + border,
r.Width - border - right_border - 1, r.Height - border * 2 - 1);
SolidBrush centerColorBrush = new SolidBrush( centerColor );
g.FillRectangle(centerColorBrush, rc);
Pen pen = Pens.Black;
g.DrawRectangle(pen, rc);
Pen greyPen = new Pen(SystemColors.ControlDark);
//draw the arrow
Point p1 = new Point(r.Width - 9, r.Height / 2 - 1);
Point p2 = new Point(r.Width - 5, r.Height / 2 - 1);
g.DrawLine(Enabled ? pen : greyPen, p1, p2);
p1 = new Point(r.Width - 8, r.Height / 2);
p2 = new Point(r.Width - 6, r.Height / 2);
g.DrawLine(Enabled ? pen : greyPen, p1, p2);
p1 = new Point(r.Width - 7, r.Height / 2);
p2 = new Point(r.Width - 7, r.Height / 2 + 1);
g.DrawLine(Enabled ? pen : greyPen, p1, p2);
//draw the divider line
pen = new Pen(SystemColors.ControlDark);
p1 = new Point(r.Width - 12, 4);
p2 = new Point(r.Width - 12, r.Height - 5 );
g.DrawLine(pen, p1, p2);
pen = new Pen(SystemColors.ControlLightLight);
p1 = new Point(r.Width - 11, 4);
p2 = new Point(r.Width - 11, r.Height - 5 );
g.DrawLine(pen, p1, p2);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -