Show color picker crosshair by default

This commit is contained in:
Jaex 2016-11-30 16:01:12 +03:00
parent 35335e0d43
commit b417d31c0c
7 changed files with 103 additions and 105 deletions

View file

@ -62,13 +62,13 @@ protected override void DrawHue()
HSB start = new HSB(SelectedColor.HSB.Hue, 0.0, 0.0, SelectedColor.RGBA.Alpha); HSB start = new HSB(SelectedColor.HSB.Hue, 0.0, 0.0, SelectedColor.RGBA.Alpha);
HSB end = new HSB(SelectedColor.HSB.Hue, 1.0, 0.0, SelectedColor.RGBA.Alpha); HSB end = new HSB(SelectedColor.HSB.Hue, 1.0, 0.0, SelectedColor.RGBA.Alpha);
for (int y = 0; y < ClientHeight; y++) for (int y = 0; y < clientHeight; y++)
{ {
start.Brightness = end.Brightness = 1.0 - (double)y / (ClientHeight - 1); start.Brightness = end.Brightness = 1.0 - (double)y / (clientHeight - 1);
using (LinearGradientBrush brush = new LinearGradientBrush(new Rectangle(0, 0, ClientWidth, 1), start, end, LinearGradientMode.Horizontal)) using (LinearGradientBrush brush = new LinearGradientBrush(new Rectangle(0, 0, clientWidth, 1), start, end, LinearGradientMode.Horizontal))
{ {
g.FillRectangle(brush, new Rectangle(0, y, ClientWidth, 1)); g.FillRectangle(brush, new Rectangle(0, y, clientWidth, 1));
} }
} }
} }
@ -83,13 +83,13 @@ protected override void DrawSaturation()
HSB start = new HSB(0.0, SelectedColor.HSB.Saturation, 1.0, SelectedColor.RGBA.Alpha); HSB start = new HSB(0.0, SelectedColor.HSB.Saturation, 1.0, SelectedColor.RGBA.Alpha);
HSB end = new HSB(0.0, SelectedColor.HSB.Saturation, 0.0, SelectedColor.RGBA.Alpha); HSB end = new HSB(0.0, SelectedColor.HSB.Saturation, 0.0, SelectedColor.RGBA.Alpha);
for (int x = 0; x < ClientWidth; x++) for (int x = 0; x < clientWidth; x++)
{ {
start.Hue = end.Hue = (double)x / (ClientHeight - 1); start.Hue = end.Hue = (double)x / (clientHeight - 1);
using (LinearGradientBrush brush = new LinearGradientBrush(new Rectangle(0, 0, 1, ClientHeight), start, end, LinearGradientMode.Vertical)) using (LinearGradientBrush brush = new LinearGradientBrush(new Rectangle(0, 0, 1, clientHeight), start, end, LinearGradientMode.Vertical))
{ {
g.FillRectangle(brush, new Rectangle(x, 0, 1, ClientHeight)); g.FillRectangle(brush, new Rectangle(x, 0, 1, clientHeight));
} }
} }
} }
@ -104,13 +104,13 @@ protected override void DrawBrightness()
HSB start = new HSB(0.0, 1.0, SelectedColor.HSB.Brightness, SelectedColor.RGBA.Alpha); HSB start = new HSB(0.0, 1.0, SelectedColor.HSB.Brightness, SelectedColor.RGBA.Alpha);
HSB end = new HSB(0.0, 0.0, SelectedColor.HSB.Brightness, SelectedColor.RGBA.Alpha); HSB end = new HSB(0.0, 0.0, SelectedColor.HSB.Brightness, SelectedColor.RGBA.Alpha);
for (int x = 0; x < ClientWidth; x++) for (int x = 0; x < clientWidth; x++)
{ {
start.Hue = end.Hue = (double)x / (ClientHeight - 1); start.Hue = end.Hue = (double)x / (clientHeight - 1);
using (LinearGradientBrush brush = new LinearGradientBrush(new Rectangle(0, 0, 1, ClientHeight), start, end, LinearGradientMode.Vertical)) using (LinearGradientBrush brush = new LinearGradientBrush(new Rectangle(0, 0, 1, clientHeight), start, end, LinearGradientMode.Vertical))
{ {
g.FillRectangle(brush, new Rectangle(x, 0, 1, ClientHeight)); g.FillRectangle(brush, new Rectangle(x, 0, 1, clientHeight));
} }
} }
} }
@ -125,13 +125,13 @@ protected override void DrawRed()
RGBA start = new RGBA(SelectedColor.RGBA.Red, 0, 0, SelectedColor.RGBA.Alpha); RGBA start = new RGBA(SelectedColor.RGBA.Red, 0, 0, SelectedColor.RGBA.Alpha);
RGBA end = new RGBA(SelectedColor.RGBA.Red, 0, 255, SelectedColor.RGBA.Alpha); RGBA end = new RGBA(SelectedColor.RGBA.Red, 0, 255, SelectedColor.RGBA.Alpha);
for (int y = 0; y < ClientHeight; y++) for (int y = 0; y < clientHeight; y++)
{ {
start.Green = end.Green = Round(255 - (255 * (double)y / (ClientHeight - 1))); start.Green = end.Green = Round(255 - (255 * (double)y / (clientHeight - 1)));
using (LinearGradientBrush brush = new LinearGradientBrush(new Rectangle(0, 0, ClientWidth, 1), start, end, LinearGradientMode.Horizontal)) using (LinearGradientBrush brush = new LinearGradientBrush(new Rectangle(0, 0, clientWidth, 1), start, end, LinearGradientMode.Horizontal))
{ {
g.FillRectangle(brush, new Rectangle(0, y, ClientWidth, 1)); g.FillRectangle(brush, new Rectangle(0, y, clientWidth, 1));
} }
} }
} }
@ -146,13 +146,13 @@ protected override void DrawGreen()
RGBA start = new RGBA(0, SelectedColor.RGBA.Green, 0, SelectedColor.RGBA.Alpha); RGBA start = new RGBA(0, SelectedColor.RGBA.Green, 0, SelectedColor.RGBA.Alpha);
RGBA end = new RGBA(0, SelectedColor.RGBA.Green, 255, SelectedColor.RGBA.Alpha); RGBA end = new RGBA(0, SelectedColor.RGBA.Green, 255, SelectedColor.RGBA.Alpha);
for (int y = 0; y < ClientHeight; y++) for (int y = 0; y < clientHeight; y++)
{ {
start.Red = end.Red = Round(255 - (255 * (double)y / (ClientHeight - 1))); start.Red = end.Red = Round(255 - (255 * (double)y / (clientHeight - 1)));
using (LinearGradientBrush brush = new LinearGradientBrush(new Rectangle(0, 0, ClientWidth, 1), start, end, LinearGradientMode.Horizontal)) using (LinearGradientBrush brush = new LinearGradientBrush(new Rectangle(0, 0, clientWidth, 1), start, end, LinearGradientMode.Horizontal))
{ {
g.FillRectangle(brush, new Rectangle(0, y, ClientWidth, 1)); g.FillRectangle(brush, new Rectangle(0, y, clientWidth, 1));
} }
} }
} }
@ -167,13 +167,13 @@ protected override void DrawBlue()
RGBA start = new RGBA(0, 0, SelectedColor.RGBA.Blue, SelectedColor.RGBA.Alpha); RGBA start = new RGBA(0, 0, SelectedColor.RGBA.Blue, SelectedColor.RGBA.Alpha);
RGBA end = new RGBA(255, 0, SelectedColor.RGBA.Blue, SelectedColor.RGBA.Alpha); RGBA end = new RGBA(255, 0, SelectedColor.RGBA.Blue, SelectedColor.RGBA.Alpha);
for (int y = 0; y < ClientHeight; y++) for (int y = 0; y < clientHeight; y++)
{ {
start.Green = end.Green = Round(255 - (255 * (double)y / (ClientHeight - 1))); start.Green = end.Green = Round(255 - (255 * (double)y / (clientHeight - 1)));
using (LinearGradientBrush brush = new LinearGradientBrush(new Rectangle(0, 0, ClientWidth, 1), start, end, LinearGradientMode.Horizontal)) using (LinearGradientBrush brush = new LinearGradientBrush(new Rectangle(0, 0, clientWidth, 1), start, end, LinearGradientMode.Horizontal))
{ {
g.FillRectangle(brush, new Rectangle(0, y, ClientWidth, 1)); g.FillRectangle(brush, new Rectangle(0, y, clientWidth, 1));
} }
} }
} }

View file

@ -72,12 +72,12 @@ public DrawStyle DrawStyle
} }
} }
public bool DrawCrosshair public bool CrosshairVisible
{ {
set set
{ {
colorBox.drawCrosshair = value; colorBox.CrosshairVisible = value;
colorSlider.drawCrosshair = value; colorSlider.CrosshairVisible = value;
} }
} }

View file

@ -67,7 +67,7 @@ public static Color GetColor(Color currentColor)
public void SetCurrentColor(Color currentColor, bool keepPreviousColor) public void SetCurrentColor(Color currentColor, bool keepPreviousColor)
{ {
oldColorExist = keepPreviousColor; oldColorExist = keepPreviousColor;
colorPicker.DrawCrosshair = lblOld.Visible = oldColorExist; lblOld.Visible = oldColorExist;
NewColor = OldColor = currentColor; NewColor = OldColor = currentColor;
colorPicker.ChangeColor(currentColor); colorPicker.ChangeColor(currentColor);
nudAlpha.SetValue(currentColor.A); nudAlpha.SetValue(currentColor.A);

View file

@ -49,7 +49,7 @@ protected override void DrawCrosshair(Graphics g)
private void DrawCrosshair(Graphics g, Pen pen, int offset, int height) private void DrawCrosshair(Graphics g, Pen pen, int offset, int height)
{ {
g.DrawRectangleProper(pen, new Rectangle(offset, lastPos.Y - height / 2, ClientWidth - offset * 2, height)); g.DrawRectangleProper(pen, new Rectangle(offset, lastPos.Y - height / 2, clientWidth - offset * 2, height));
} }
// Y = Hue 360 -> 0 // Y = Hue 360 -> 0
@ -59,13 +59,13 @@ protected override void DrawHue()
{ {
HSB color = new HSB(0.0, 1.0, 1.0, SelectedColor.RGBA.Alpha); HSB color = new HSB(0.0, 1.0, 1.0, SelectedColor.RGBA.Alpha);
for (int y = 0; y < ClientHeight; y++) for (int y = 0; y < clientHeight; y++)
{ {
color.Hue = 1.0 - (double)y / (ClientHeight - 1); color.Hue = 1.0 - (double)y / (clientHeight - 1);
using (Pen pen = new Pen(color)) using (Pen pen = new Pen(color))
{ {
g.DrawLine(pen, 0, y, ClientWidth, y); g.DrawLine(pen, 0, y, clientWidth, y);
} }
} }
} }
@ -78,13 +78,13 @@ protected override void DrawSaturation()
{ {
HSB color = new HSB(SelectedColor.HSB.Hue, 0.0, SelectedColor.HSB.Brightness, SelectedColor.RGBA.Alpha); HSB color = new HSB(SelectedColor.HSB.Hue, 0.0, SelectedColor.HSB.Brightness, SelectedColor.RGBA.Alpha);
for (int y = 0; y < ClientHeight; y++) for (int y = 0; y < clientHeight; y++)
{ {
color.Saturation = 1.0 - (double)y / (ClientHeight - 1); color.Saturation = 1.0 - (double)y / (clientHeight - 1);
using (Pen pen = new Pen(color)) using (Pen pen = new Pen(color))
{ {
g.DrawLine(pen, 0, y, ClientWidth, y); g.DrawLine(pen, 0, y, clientWidth, y);
} }
} }
} }
@ -97,13 +97,13 @@ protected override void DrawBrightness()
{ {
HSB color = new HSB(SelectedColor.HSB.Hue, SelectedColor.HSB.Saturation, 0.0, SelectedColor.RGBA.Alpha); HSB color = new HSB(SelectedColor.HSB.Hue, SelectedColor.HSB.Saturation, 0.0, SelectedColor.RGBA.Alpha);
for (int y = 0; y < ClientHeight; y++) for (int y = 0; y < clientHeight; y++)
{ {
color.Brightness = 1.0 - (double)y / (ClientHeight - 1); color.Brightness = 1.0 - (double)y / (clientHeight - 1);
using (Pen pen = new Pen(color)) using (Pen pen = new Pen(color))
{ {
g.DrawLine(pen, 0, y, ClientWidth, y); g.DrawLine(pen, 0, y, clientWidth, y);
} }
} }
} }
@ -116,13 +116,13 @@ protected override void DrawRed()
{ {
RGBA color = new RGBA(0, SelectedColor.RGBA.Green, SelectedColor.RGBA.Blue, SelectedColor.RGBA.Alpha); RGBA color = new RGBA(0, SelectedColor.RGBA.Green, SelectedColor.RGBA.Blue, SelectedColor.RGBA.Alpha);
for (int y = 0; y < ClientHeight; y++) for (int y = 0; y < clientHeight; y++)
{ {
color.Red = 255 - Round(255 * (double)y / (ClientHeight - 1)); color.Red = 255 - Round(255 * (double)y / (clientHeight - 1));
using (Pen pen = new Pen(color)) using (Pen pen = new Pen(color))
{ {
g.DrawLine(pen, 0, y, ClientWidth, y); g.DrawLine(pen, 0, y, clientWidth, y);
} }
} }
} }
@ -135,13 +135,13 @@ protected override void DrawGreen()
{ {
RGBA color = new RGBA(SelectedColor.RGBA.Red, 0, SelectedColor.RGBA.Blue, SelectedColor.RGBA.Alpha); RGBA color = new RGBA(SelectedColor.RGBA.Red, 0, SelectedColor.RGBA.Blue, SelectedColor.RGBA.Alpha);
for (int y = 0; y < ClientHeight; y++) for (int y = 0; y < clientHeight; y++)
{ {
color.Green = 255 - Round(255 * (double)y / (ClientHeight - 1)); color.Green = 255 - Round(255 * (double)y / (clientHeight - 1));
using (Pen pen = new Pen(color)) using (Pen pen = new Pen(color))
{ {
g.DrawLine(pen, 0, y, ClientWidth, y); g.DrawLine(pen, 0, y, clientWidth, y);
} }
} }
} }
@ -154,13 +154,13 @@ protected override void DrawBlue()
{ {
RGBA color = new RGBA(SelectedColor.RGBA.Red, SelectedColor.RGBA.Green, 0, SelectedColor.RGBA.Alpha); RGBA color = new RGBA(SelectedColor.RGBA.Red, SelectedColor.RGBA.Green, 0, SelectedColor.RGBA.Alpha);
for (int y = 0; y < ClientHeight; y++) for (int y = 0; y < clientHeight; y++)
{ {
color.Blue = 255 - Round(255 * (double)y / (ClientHeight - 1)); color.Blue = 255 - Round(255 * (double)y / (clientHeight - 1));
using (Pen pen = new Pen(color)) using (Pen pen = new Pen(color))
{ {
g.DrawLine(pen, 0, y, ClientWidth, y); g.DrawLine(pen, 0, y, clientWidth, y);
} }
} }
} }

View file

@ -36,16 +36,7 @@ public abstract class ColorUserControl : UserControl
{ {
public event ColorEventHandler ColorChanged; public event ColorEventHandler ColorChanged;
public bool drawCrosshair; public bool CrosshairVisible { get; set; } = true;
protected Bitmap bmp;
protected int ClientWidth;
protected int ClientHeight;
protected DrawStyle drawStyle;
protected MyColor selectedColor;
protected bool mouseDown;
protected Point lastPos;
protected Timer mouseMoveTimer;
public MyColor SelectedColor public MyColor SelectedColor
{ {
@ -93,6 +84,14 @@ public DrawStyle DrawStyle
} }
} }
protected Bitmap bmp;
protected int clientWidth, clientHeight;
protected DrawStyle drawStyle;
protected MyColor selectedColor;
protected bool mouseDown;
protected Point lastPos;
protected Timer mouseMoveTimer;
#region Component Designer generated code #region Component Designer generated code
private IContainer components = null; private IContainer components = null;
@ -102,9 +101,9 @@ protected virtual void Initialize()
SuspendLayout(); SuspendLayout();
DoubleBuffered = true; DoubleBuffered = true;
ClientWidth = this.ClientRectangle.Width; clientWidth = ClientRectangle.Width;
ClientHeight = this.ClientRectangle.Height; clientHeight = ClientRectangle.Height;
bmp = new Bitmap(ClientWidth, ClientHeight, PixelFormat.Format32bppArgb); bmp = new Bitmap(clientWidth, clientHeight, PixelFormat.Format32bppArgb);
SelectedColor = Color.Red; SelectedColor = Color.Red;
DrawStyle = DrawStyle.Hue; DrawStyle = DrawStyle.Hue;
@ -137,16 +136,16 @@ protected override void Dispose(bool disposing)
private void EventClientSizeChanged(object sender, EventArgs e) private void EventClientSizeChanged(object sender, EventArgs e)
{ {
ClientWidth = ClientRectangle.Width; clientWidth = ClientRectangle.Width;
ClientHeight = ClientRectangle.Height; clientHeight = ClientRectangle.Height;
if (bmp != null) bmp.Dispose(); if (bmp != null) bmp.Dispose();
bmp = new Bitmap(ClientWidth, ClientHeight, PixelFormat.Format32bppArgb); bmp = new Bitmap(clientWidth, clientHeight, PixelFormat.Format32bppArgb);
DrawColors(); DrawColors();
} }
private void EventMouseDown(object sender, MouseEventArgs e) private void EventMouseDown(object sender, MouseEventArgs e)
{ {
drawCrosshair = true; CrosshairVisible = true;
mouseDown = true; mouseDown = true;
mouseMoveTimer.Start(); mouseMoveTimer.Start();
} }
@ -174,7 +173,7 @@ private void EventPaint(object sender, PaintEventArgs e)
if (SelectedColor.IsTransparent) if (SelectedColor.IsTransparent)
{ {
if (bmp != null) bmp.Dispose(); if (bmp != null) bmp.Dispose();
bmp = (Bitmap)ImageHelpers.DrawCheckers(ClientWidth, ClientHeight); bmp = (Bitmap)ImageHelpers.DrawCheckers(clientWidth, clientHeight);
} }
DrawColors(); DrawColors();
@ -182,7 +181,7 @@ private void EventPaint(object sender, PaintEventArgs e)
g.DrawImage(bmp, ClientRectangle); g.DrawImage(bmp, ClientRectangle);
if (drawCrosshair) if (CrosshairVisible)
{ {
DrawCrosshair(g); DrawCrosshair(g);
} }
@ -242,28 +241,28 @@ protected void SetBoxMarker()
switch (DrawStyle) switch (DrawStyle)
{ {
case DrawStyle.Hue: case DrawStyle.Hue:
lastPos.X = Round((ClientWidth - 1) * SelectedColor.HSB.Saturation); lastPos.X = Round((clientWidth - 1) * SelectedColor.HSB.Saturation);
lastPos.Y = Round((ClientHeight - 1) * (1.0 - SelectedColor.HSB.Brightness)); lastPos.Y = Round((clientHeight - 1) * (1.0 - SelectedColor.HSB.Brightness));
break; break;
case DrawStyle.Saturation: case DrawStyle.Saturation:
lastPos.X = Round((ClientWidth - 1) * SelectedColor.HSB.Hue); lastPos.X = Round((clientWidth - 1) * SelectedColor.HSB.Hue);
lastPos.Y = Round((ClientHeight - 1) * (1.0 - SelectedColor.HSB.Brightness)); lastPos.Y = Round((clientHeight - 1) * (1.0 - SelectedColor.HSB.Brightness));
break; break;
case DrawStyle.Brightness: case DrawStyle.Brightness:
lastPos.X = Round((ClientWidth - 1) * SelectedColor.HSB.Hue); lastPos.X = Round((clientWidth - 1) * SelectedColor.HSB.Hue);
lastPos.Y = Round((ClientHeight - 1) * (1.0 - SelectedColor.HSB.Saturation)); lastPos.Y = Round((clientHeight - 1) * (1.0 - SelectedColor.HSB.Saturation));
break; break;
case DrawStyle.Red: case DrawStyle.Red:
lastPos.X = Round((ClientWidth - 1) * (double)SelectedColor.RGBA.Blue / 255); lastPos.X = Round((clientWidth - 1) * (double)SelectedColor.RGBA.Blue / 255);
lastPos.Y = Round((ClientHeight - 1) * (1.0 - (double)SelectedColor.RGBA.Green / 255)); lastPos.Y = Round((clientHeight - 1) * (1.0 - (double)SelectedColor.RGBA.Green / 255));
break; break;
case DrawStyle.Green: case DrawStyle.Green:
lastPos.X = Round((ClientWidth - 1) * (double)SelectedColor.RGBA.Blue / 255); lastPos.X = Round((clientWidth - 1) * (double)SelectedColor.RGBA.Blue / 255);
lastPos.Y = Round((ClientHeight - 1) * (1.0 - (double)SelectedColor.RGBA.Red / 255)); lastPos.Y = Round((clientHeight - 1) * (1.0 - (double)SelectedColor.RGBA.Red / 255));
break; break;
case DrawStyle.Blue: case DrawStyle.Blue:
lastPos.X = Round((ClientWidth - 1) * (double)SelectedColor.RGBA.Red / 255); lastPos.X = Round((clientWidth - 1) * (double)SelectedColor.RGBA.Red / 255);
lastPos.Y = Round((ClientHeight - 1) * (1.0 - (double)SelectedColor.RGBA.Green / 255)); lastPos.Y = Round((clientHeight - 1) * (1.0 - (double)SelectedColor.RGBA.Green / 255));
break; break;
} }
@ -275,33 +274,33 @@ protected void GetBoxColor()
switch (DrawStyle) switch (DrawStyle)
{ {
case DrawStyle.Hue: case DrawStyle.Hue:
selectedColor.HSB.Saturation = (double)lastPos.X / (ClientWidth - 1); selectedColor.HSB.Saturation = (double)lastPos.X / (clientWidth - 1);
selectedColor.HSB.Brightness = 1.0 - (double)lastPos.Y / (ClientHeight - 1); selectedColor.HSB.Brightness = 1.0 - (double)lastPos.Y / (clientHeight - 1);
selectedColor.HSBUpdate(); selectedColor.HSBUpdate();
break; break;
case DrawStyle.Saturation: case DrawStyle.Saturation:
selectedColor.HSB.Hue = (double)lastPos.X / (ClientWidth - 1); selectedColor.HSB.Hue = (double)lastPos.X / (clientWidth - 1);
selectedColor.HSB.Brightness = 1.0 - (double)lastPos.Y / (ClientHeight - 1); selectedColor.HSB.Brightness = 1.0 - (double)lastPos.Y / (clientHeight - 1);
selectedColor.HSBUpdate(); selectedColor.HSBUpdate();
break; break;
case DrawStyle.Brightness: case DrawStyle.Brightness:
selectedColor.HSB.Hue = (double)lastPos.X / (ClientWidth - 1); selectedColor.HSB.Hue = (double)lastPos.X / (clientWidth - 1);
selectedColor.HSB.Saturation = 1.0 - (double)lastPos.Y / (ClientHeight - 1); selectedColor.HSB.Saturation = 1.0 - (double)lastPos.Y / (clientHeight - 1);
selectedColor.HSBUpdate(); selectedColor.HSBUpdate();
break; break;
case DrawStyle.Red: case DrawStyle.Red:
selectedColor.RGBA.Blue = Round(255 * (double)lastPos.X / (ClientWidth - 1)); selectedColor.RGBA.Blue = Round(255 * (double)lastPos.X / (clientWidth - 1));
selectedColor.RGBA.Green = Round(255 * (1.0 - (double)lastPos.Y / (ClientHeight - 1))); selectedColor.RGBA.Green = Round(255 * (1.0 - (double)lastPos.Y / (clientHeight - 1)));
selectedColor.RGBAUpdate(); selectedColor.RGBAUpdate();
break; break;
case DrawStyle.Green: case DrawStyle.Green:
selectedColor.RGBA.Blue = Round(255 * (double)lastPos.X / (ClientWidth - 1)); selectedColor.RGBA.Blue = Round(255 * (double)lastPos.X / (clientWidth - 1));
selectedColor.RGBA.Red = Round(255 * (1.0 - (double)lastPos.Y / (ClientHeight - 1))); selectedColor.RGBA.Red = Round(255 * (1.0 - (double)lastPos.Y / (clientHeight - 1)));
selectedColor.RGBAUpdate(); selectedColor.RGBAUpdate();
break; break;
case DrawStyle.Blue: case DrawStyle.Blue:
selectedColor.RGBA.Red = Round(255 * (double)lastPos.X / (ClientWidth - 1)); selectedColor.RGBA.Red = Round(255 * (double)lastPos.X / (clientWidth - 1));
selectedColor.RGBA.Green = Round(255 * (1.0 - (double)lastPos.Y / (ClientHeight - 1))); selectedColor.RGBA.Green = Round(255 * (1.0 - (double)lastPos.Y / (clientHeight - 1)));
selectedColor.RGBAUpdate(); selectedColor.RGBAUpdate();
break; break;
} }
@ -312,22 +311,22 @@ protected void SetSliderMarker()
switch (DrawStyle) switch (DrawStyle)
{ {
case DrawStyle.Hue: case DrawStyle.Hue:
lastPos.Y = (ClientHeight - 1) - Round((ClientHeight - 1) * SelectedColor.HSB.Hue); lastPos.Y = (clientHeight - 1) - Round((clientHeight - 1) * SelectedColor.HSB.Hue);
break; break;
case DrawStyle.Saturation: case DrawStyle.Saturation:
lastPos.Y = (ClientHeight - 1) - Round((ClientHeight - 1) * SelectedColor.HSB.Saturation); lastPos.Y = (clientHeight - 1) - Round((clientHeight - 1) * SelectedColor.HSB.Saturation);
break; break;
case DrawStyle.Brightness: case DrawStyle.Brightness:
lastPos.Y = (ClientHeight - 1) - Round((ClientHeight - 1) * SelectedColor.HSB.Brightness); lastPos.Y = (clientHeight - 1) - Round((clientHeight - 1) * SelectedColor.HSB.Brightness);
break; break;
case DrawStyle.Red: case DrawStyle.Red:
lastPos.Y = (ClientHeight - 1) - Round((ClientHeight - 1) * (double)SelectedColor.RGBA.Red / 255); lastPos.Y = (clientHeight - 1) - Round((clientHeight - 1) * (double)SelectedColor.RGBA.Red / 255);
break; break;
case DrawStyle.Green: case DrawStyle.Green:
lastPos.Y = (ClientHeight - 1) - Round((ClientHeight - 1) * (double)SelectedColor.RGBA.Green / 255); lastPos.Y = (clientHeight - 1) - Round((clientHeight - 1) * (double)SelectedColor.RGBA.Green / 255);
break; break;
case DrawStyle.Blue: case DrawStyle.Blue:
lastPos.Y = (ClientHeight - 1) - Round((ClientHeight - 1) * (double)SelectedColor.RGBA.Blue / 255); lastPos.Y = (clientHeight - 1) - Round((clientHeight - 1) * (double)SelectedColor.RGBA.Blue / 255);
break; break;
} }
lastPos = GetPoint(lastPos); lastPos = GetPoint(lastPos);
@ -338,27 +337,27 @@ protected void GetSliderColor()
switch (DrawStyle) switch (DrawStyle)
{ {
case DrawStyle.Hue: case DrawStyle.Hue:
selectedColor.HSB.Hue = 1.0 - (double)lastPos.Y / (ClientHeight - 1); selectedColor.HSB.Hue = 1.0 - (double)lastPos.Y / (clientHeight - 1);
selectedColor.HSBUpdate(); selectedColor.HSBUpdate();
break; break;
case DrawStyle.Saturation: case DrawStyle.Saturation:
selectedColor.HSB.Saturation = 1.0 - (double)lastPos.Y / (ClientHeight - 1); selectedColor.HSB.Saturation = 1.0 - (double)lastPos.Y / (clientHeight - 1);
selectedColor.HSBUpdate(); selectedColor.HSBUpdate();
break; break;
case DrawStyle.Brightness: case DrawStyle.Brightness:
selectedColor.HSB.Brightness = 1.0 - (double)lastPos.Y / (ClientHeight - 1); selectedColor.HSB.Brightness = 1.0 - (double)lastPos.Y / (clientHeight - 1);
selectedColor.HSBUpdate(); selectedColor.HSBUpdate();
break; break;
case DrawStyle.Red: case DrawStyle.Red:
selectedColor.RGBA.Red = 255 - Round(255 * (double)lastPos.Y / (ClientHeight - 1)); selectedColor.RGBA.Red = 255 - Round(255 * (double)lastPos.Y / (clientHeight - 1));
selectedColor.RGBAUpdate(); selectedColor.RGBAUpdate();
break; break;
case DrawStyle.Green: case DrawStyle.Green:
selectedColor.RGBA.Green = 255 - Round(255 * (double)lastPos.Y / (ClientHeight - 1)); selectedColor.RGBA.Green = 255 - Round(255 * (double)lastPos.Y / (clientHeight - 1));
selectedColor.RGBAUpdate(); selectedColor.RGBAUpdate();
break; break;
case DrawStyle.Blue: case DrawStyle.Blue:
selectedColor.RGBA.Blue = 255 - Round(255 * (double)lastPos.Y / (ClientHeight - 1)); selectedColor.RGBA.Blue = 255 - Round(255 * (double)lastPos.Y / (clientHeight - 1));
selectedColor.RGBAUpdate(); selectedColor.RGBAUpdate();
break; break;
} }
@ -397,7 +396,7 @@ protected void GetPointColor(Point point)
protected Point GetPoint(Point point) protected Point GetPoint(Point point)
{ {
return new Point(point.X.Between(0, ClientWidth - 1), point.Y.Between(0, ClientHeight - 1)); return new Point(point.X.Between(0, clientWidth - 1), point.Y.Between(0, clientHeight - 1));
} }
protected int Round(double val) protected int Round(double val)

View file

@ -35,7 +35,7 @@ public abstract class BaseDrawingShape : BaseShape
public int BorderSize { get; set; } public int BorderSize { get; set; }
public Color FillColor { get; set; } public Color FillColor { get; set; }
public bool Shadow { get; set; } = true; public bool Shadow { get; set; }
public Color ShadowColor { get; set; } = Color.FromArgb(125, 0, 0, 0); public Color ShadowColor { get; set; } = Color.FromArgb(125, 0, 0, 0);
public Point ShadowOffset { get; set; } = new Point(0, 1); public Point ShadowOffset { get; set; } = new Point(0, 1);

View file

@ -43,7 +43,6 @@ public ScreenColorPicker()
InitializeComponent(); InitializeComponent();
btnOK.Visible = false; btnOK.Visible = false;
btnCancel.Text = Resources.ScreenColorPicker_ScreenColorPicker_Close; btnCancel.Text = Resources.ScreenColorPicker_ScreenColorPicker_Close;
colorPicker.DrawCrosshair = true;
colorTimer.Tick += colorTimer_Tick; colorTimer.Tick += colorTimer_Tick;
UpdateControls(false); UpdateControls(false);