Support dark theme color in image editor background

This commit is contained in:
Jaex 2019-06-01 00:19:37 +03:00
parent 5e2290ee6a
commit 35d6f5aaed
8 changed files with 26 additions and 67 deletions

View file

@ -205,20 +205,7 @@ public void UpdateCheckers(bool forceUpdate = false)
{ {
if (pbMain.BackgroundImage != null) pbMain.BackgroundImage.Dispose(); if (pbMain.BackgroundImage != null) pbMain.BackgroundImage.Dispose();
Color checkerPatternColor1, checkerPatternColor2; pbMain.BackgroundImage = ImageHelpers.CreateCheckerPattern(10, 10, ShareXResources.CheckerColor1, ShareXResources.CheckerColor2);
if (ShareXResources.UseDarkTheme)
{
checkerPatternColor1 = Color.FromArgb(153, 153, 153);
checkerPatternColor2 = Color.FromArgb(102, 102, 102);
}
else
{
checkerPatternColor1 = SystemColors.ControlLight;
checkerPatternColor2 = SystemColors.ControlLightLight;
}
pbMain.BackgroundImage = ImageHelpers.CreateCheckerPattern(10, 10, checkerPatternColor1, checkerPatternColor2);
} }
} }
else else

View file

@ -720,11 +720,16 @@ public static Image DrawCheckers(Image img, int size, Color color1, Color color2
} }
public static Image DrawCheckers(int width, int height) public static Image DrawCheckers(int width, int height)
{
return DrawCheckers(width, height, SystemColors.ControlLight, SystemColors.ControlLightLight);
}
public static Image DrawCheckers(int width, int height, Color color1, Color color2)
{ {
Bitmap bmp = new Bitmap(width, height); Bitmap bmp = new Bitmap(width, height);
using (Graphics g = Graphics.FromImage(bmp)) using (Graphics g = Graphics.FromImage(bmp))
using (Image checker = CreateCheckerPattern()) using (Image checker = CreateCheckerPattern(10, 10, color1, color2))
using (Brush checkerBrush = new TextureBrush(checker, WrapMode.Tile)) using (Brush checkerBrush = new TextureBrush(checker, WrapMode.Tile))
{ {
g.FillRectangle(checkerBrush, new Rectangle(0, 0, bmp.Width, bmp.Height)); g.FillRectangle(checkerBrush, new Rectangle(0, 0, bmp.Width, bmp.Height));

View file

@ -44,20 +44,7 @@ public static string UserAgent
public static bool UseDarkTheme { get; set; } public static bool UseDarkTheme { get; set; }
public static bool UseWhiteIcon { get; set; } public static bool UseWhiteIcon { get; set; }
public static Icon Icon public static Icon Icon => UseWhiteIcon ? Resources.ShareX_Icon_White : Resources.ShareX_Icon;
{
get
{
if (UseWhiteIcon)
{
return Resources.ShareX_Icon_White;
}
else
{
return Resources.ShareX_Icon;
}
}
}
public static Image Logo => Resources.ShareX_Logo; public static Image Logo => Resources.ShareX_Logo;
public static Image LogoBlack => Resources.ShareX_Logo_Black; public static Image LogoBlack => Resources.ShareX_Logo_Black;
@ -65,5 +52,8 @@ public static Icon Icon
public static Color DarkBackgroundColor { get; } = Color.FromArgb(42, 47, 56); public static Color DarkBackgroundColor { get; } = Color.FromArgb(42, 47, 56);
public static Color DarkTextColor { get; } = Color.FromArgb(235, 235, 235); public static Color DarkTextColor { get; } = Color.FromArgb(235, 235, 235);
public static Color DarkBorderColor { get; } = Color.FromArgb(28, 32, 38); public static Color DarkBorderColor { get; } = Color.FromArgb(28, 32, 38);
public static Color CheckerColor1 => UseDarkTheme ? Color.FromArgb(153, 153, 153) : SystemColors.ControlLight;
public static Color CheckerColor2 => UseDarkTheme ? Color.FromArgb(102, 102, 102) : SystemColors.ControlLightLight;
} }
} }

View file

@ -105,6 +105,7 @@ public Color CurrentColor
private TextAnimation editorPanTipAnimation; private TextAnimation editorPanTipAnimation;
private Bitmap bmpBackgroundImage; private Bitmap bmpBackgroundImage;
private Cursor defaultCursor; private Cursor defaultCursor;
private Color canvasBackgroundColor;
public RegionCaptureForm(RegionCaptureMode mode, RegionCaptureOptions options, Image canvas = null) public RegionCaptureForm(RegionCaptureMode mode, RegionCaptureOptions options, Image canvas = null)
{ {
@ -149,7 +150,17 @@ public RegionCaptureForm(RegionCaptureMode mode, RegionCaptureOptions options, I
textOuterBorderPen = new Pen(Color.FromArgb(150, Color.White)); textOuterBorderPen = new Pen(Color.FromArgb(150, Color.White));
textInnerBorderPen = new Pen(Color.FromArgb(150, Color.FromArgb(0, 81, 145))); textInnerBorderPen = new Pen(Color.FromArgb(150, Color.FromArgb(0, 81, 145)));
markerPen = new Pen(Color.FromArgb(200, Color.Red)); markerPen = new Pen(Color.FromArgb(200, Color.Red));
canvasBorderPen = new Pen(Color.FromArgb(30, Color.Black));
if (ShareXResources.UseDarkTheme)
{
canvasBackgroundColor = ShareXResources.DarkBackgroundColor;
canvasBorderPen = new Pen(ShareXResources.DarkBorderColor);
}
else
{
canvasBackgroundColor = Color.FromArgb(200, 200, 200);
canvasBorderPen = new Pen(Color.FromArgb(176, 176, 176));
}
Prepare(canvas); Prepare(canvas);
@ -313,7 +324,7 @@ internal void InitBackground(Image canvas, bool centerCanvas = true)
{ {
Rectangle sourceRect = new Rectangle(0, 0, Canvas.Width, Canvas.Height); Rectangle sourceRect = new Rectangle(0, 0, Canvas.Width, Canvas.Height);
using (Image checkers = ImageHelpers.DrawCheckers(Canvas.Width, Canvas.Height)) using (Image checkers = ImageHelpers.DrawCheckers(Canvas.Width, Canvas.Height, ShareXResources.CheckerColor1, ShareXResources.CheckerColor2))
{ {
g.DrawImage(checkers, sourceRect); g.DrawImage(checkers, sourceRect);
} }
@ -691,7 +702,7 @@ protected override void OnPaint(PaintEventArgs e)
if (IsEditorMode && !CanvasRectangle.Contains(ClientArea)) if (IsEditorMode && !CanvasRectangle.Contains(ClientArea))
{ {
g.Clear(Options.ImageEditorBackgroundColor); g.Clear(canvasBackgroundColor);
g.DrawRectangleProper(canvasBorderPen, CanvasRectangle.Offset(1)); g.DrawRectangleProper(canvasBorderPen, CanvasRectangle.Offset(1));
} }

View file

@ -1408,15 +1408,6 @@ internal class Resources {
} }
} }
/// <summary>
/// Looks up a localized string similar to Editor background color....
/// </summary>
internal static string ShapeManager_CreateToolbar_EditorBackgroundColor {
get {
return ResourceManager.GetString("ShapeManager_CreateToolbar_EditorBackgroundColor", resourceCulture);
}
}
/// <summary> /// <summary>
/// Looks up a localized string similar to Editor start mode:. /// Looks up a localized string similar to Editor start mode:.
/// </summary> /// </summary>

View file

@ -180,9 +180,6 @@ Distance: {6:0.00} px / Angle: {7:0.00}°</value>
<data name="layer_shape_region" type="System.Resources.ResXFileRef, System.Windows.Forms"> <data name="layer_shape_region" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\layer-shape-region.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> <value>..\Resources\layer-shape-region.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data> </data>
<data name="ShapeManager_CreateToolbar_EditorBackgroundColor" xml:space="preserve">
<value>Editor background color...</value>
</data>
<data name="arrow_circle_double" type="System.Resources.ResXFileRef, System.Windows.Forms"> <data name="arrow_circle_double" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\arrow-circle-double.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> <value>..\Resources\arrow-circle-double.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data> </data>

View file

@ -86,7 +86,6 @@ public class RegionCaptureOptions
public ImageEditorStartMode ImageEditorStartMode = ImageEditorStartMode.AutoSize; public ImageEditorStartMode ImageEditorStartMode = ImageEditorStartMode.AutoSize;
public WindowState ImageEditorWindowState = new WindowState(); public WindowState ImageEditorWindowState = new WindowState();
public bool AutoCloseEditorOnTask = false; public bool AutoCloseEditorOnTask = false;
public Color ImageEditorBackgroundColor = Color.FromArgb(200, 200, 200);
public bool ShowEditorPanTip = true; public bool ShowEditorPanTip = true;
public ImageEditorInterpolationMode ImageEditorResizeInterpolationMode = ImageEditorInterpolationMode.Bicubic; public ImageEditorInterpolationMode ImageEditorResizeInterpolationMode = ImageEditorInterpolationMode.Bicubic;
public Size EditorNewImageSize = new Size(800, 600); public Size EditorNewImageSize = new Size(800, 600);

View file

@ -49,7 +49,7 @@ internal partial class ShapeManager
private ToolStripButton tsbSaveImage, tsbBorderColor, tsbFillColor, tsbHighlightColor; private ToolStripButton tsbSaveImage, tsbBorderColor, tsbFillColor, tsbHighlightColor;
private ToolStripDropDownButton tsddbShapeOptions; private ToolStripDropDownButton tsddbShapeOptions;
private ToolStripMenuItem tsmiArrowHeadsBothSide, tsmiShadow, tsmiShadowColor, tsmiStepUseLetters, tsmiUndo, tsmiDelete, tsmiDeleteAll, tsmiMoveTop, private ToolStripMenuItem tsmiArrowHeadsBothSide, tsmiShadow, tsmiShadowColor, tsmiStepUseLetters, tsmiUndo, tsmiDelete, tsmiDeleteAll, tsmiMoveTop,
tsmiMoveUp, tsmiMoveDown, tsmiMoveBottom, tsmiRegionCapture, tsmiQuickCrop, tsmiShowMagnifier, tsmiImageEditorBackgroundColor; tsmiMoveUp, tsmiMoveDown, tsmiMoveBottom, tsmiRegionCapture, tsmiQuickCrop, tsmiShowMagnifier;
private ToolStripLabeledNumericUpDown tslnudBorderSize, tslnudCornerRadius, tslnudCenterPoints, tslnudBlurRadius, tslnudPixelateSize, tslnudStepFontSize, private ToolStripLabeledNumericUpDown tslnudBorderSize, tslnudCornerRadius, tslnudCenterPoints, tslnudBlurRadius, tslnudPixelateSize, tslnudStepFontSize,
tslnudMagnifierPixelCount, tslnudStartingStepValue, tslnudMagnifyStrength; tslnudMagnifierPixelCount, tslnudStartingStepValue, tslnudMagnifyStrength;
private ToolStripLabel tslDragLeft, tslDragRight; private ToolStripLabel tslDragLeft, tslDragRight;
@ -863,21 +863,6 @@ internal void CreateToolbar()
tsmiAutoCloseEditorOnTask.Click += (sender, e) => Options.AutoCloseEditorOnTask = tsmiAutoCloseEditorOnTask.Checked; tsmiAutoCloseEditorOnTask.Click += (sender, e) => Options.AutoCloseEditorOnTask = tsmiAutoCloseEditorOnTask.Checked;
tsddbOptions.DropDownItems.Add(tsmiAutoCloseEditorOnTask); tsddbOptions.DropDownItems.Add(tsmiAutoCloseEditorOnTask);
tsmiImageEditorBackgroundColor = new ToolStripMenuItem(Resources.ShapeManager_CreateToolbar_EditorBackgroundColor);
tsmiImageEditorBackgroundColor.Click += (sender, e) =>
{
Form.Pause();
if (PickColor(Options.ImageEditorBackgroundColor, out Color newColor))
{
Options.ImageEditorBackgroundColor = newColor;
UpdateMenu();
}
Form.Resume();
};
tsddbOptions.DropDownItems.Add(tsmiImageEditorBackgroundColor);
tsddbOptions.DropDownItems.Add(new ToolStripSeparator()); tsddbOptions.DropDownItems.Add(new ToolStripSeparator());
} }
@ -1475,12 +1460,6 @@ private void UpdateMenu()
{ {
tsmiRegionCapture.Visible = !Options.QuickCrop && ValidRegions.Length > 0; tsmiRegionCapture.Visible = !Options.QuickCrop && ValidRegions.Length > 0;
} }
if (tsmiImageEditorBackgroundColor != null)
{
if (tsmiImageEditorBackgroundColor.Image != null) tsmiImageEditorBackgroundColor.Image.Dispose();
tsmiImageEditorBackgroundColor.Image = ImageHelpers.CreateColorPickerIcon(Options.ImageEditorBackgroundColor, new Rectangle(0, 0, 16, 16));
}
} }
internal Cursor GetSelectedCursor() internal Cursor GetSelectedCursor()