From 35d6f5aaed2e4f206c90e223a451284a1739ac2b Mon Sep 17 00:00:00 2001 From: Jaex Date: Sat, 1 Jun 2019 00:19:37 +0300 Subject: [PATCH] Support dark theme color in image editor background --- ShareX.HelpersLib/Controls/MyPictureBox.cs | 15 +----------- ShareX.HelpersLib/Helpers/ImageHelpers.cs | 7 +++++- ShareX.HelpersLib/ShareXResources.cs | 18 ++++----------- .../Forms/RegionCaptureForm.cs | 17 +++++++++++--- .../Properties/Resources.Designer.cs | 9 -------- .../Properties/Resources.resx | 3 --- .../RegionCaptureOptions.cs | 1 - .../Shapes/ShapeManagerMenu.cs | 23 +------------------ 8 files changed, 26 insertions(+), 67 deletions(-) diff --git a/ShareX.HelpersLib/Controls/MyPictureBox.cs b/ShareX.HelpersLib/Controls/MyPictureBox.cs index 7621d0eba..bb70ff116 100644 --- a/ShareX.HelpersLib/Controls/MyPictureBox.cs +++ b/ShareX.HelpersLib/Controls/MyPictureBox.cs @@ -205,20 +205,7 @@ public void UpdateCheckers(bool forceUpdate = false) { if (pbMain.BackgroundImage != null) pbMain.BackgroundImage.Dispose(); - Color checkerPatternColor1, checkerPatternColor2; - - 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); + pbMain.BackgroundImage = ImageHelpers.CreateCheckerPattern(10, 10, ShareXResources.CheckerColor1, ShareXResources.CheckerColor2); } } else diff --git a/ShareX.HelpersLib/Helpers/ImageHelpers.cs b/ShareX.HelpersLib/Helpers/ImageHelpers.cs index 90765e56a..fa35982bc 100644 --- a/ShareX.HelpersLib/Helpers/ImageHelpers.cs +++ b/ShareX.HelpersLib/Helpers/ImageHelpers.cs @@ -720,11 +720,16 @@ public static Image DrawCheckers(Image img, int size, Color color1, Color color2 } 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); 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)) { g.FillRectangle(checkerBrush, new Rectangle(0, 0, bmp.Width, bmp.Height)); diff --git a/ShareX.HelpersLib/ShareXResources.cs b/ShareX.HelpersLib/ShareXResources.cs index a7be6ba27..4da416e21 100644 --- a/ShareX.HelpersLib/ShareXResources.cs +++ b/ShareX.HelpersLib/ShareXResources.cs @@ -44,20 +44,7 @@ public static string UserAgent public static bool UseDarkTheme { get; set; } public static bool UseWhiteIcon { get; set; } - public static Icon Icon - { - get - { - if (UseWhiteIcon) - { - return Resources.ShareX_Icon_White; - } - else - { - return Resources.ShareX_Icon; - } - } - } + public static Icon Icon => UseWhiteIcon ? Resources.ShareX_Icon_White : Resources.ShareX_Icon; public static Image Logo => Resources.ShareX_Logo; 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 DarkTextColor { get; } = Color.FromArgb(235, 235, 235); 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; } } \ No newline at end of file diff --git a/ShareX.ScreenCaptureLib/Forms/RegionCaptureForm.cs b/ShareX.ScreenCaptureLib/Forms/RegionCaptureForm.cs index 58dbc2a24..4030ca655 100644 --- a/ShareX.ScreenCaptureLib/Forms/RegionCaptureForm.cs +++ b/ShareX.ScreenCaptureLib/Forms/RegionCaptureForm.cs @@ -105,6 +105,7 @@ public Color CurrentColor private TextAnimation editorPanTipAnimation; private Bitmap bmpBackgroundImage; private Cursor defaultCursor; + private Color canvasBackgroundColor; 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)); textInnerBorderPen = new Pen(Color.FromArgb(150, Color.FromArgb(0, 81, 145))); 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); @@ -313,7 +324,7 @@ internal void InitBackground(Image canvas, bool centerCanvas = true) { 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); } @@ -691,7 +702,7 @@ protected override void OnPaint(PaintEventArgs e) if (IsEditorMode && !CanvasRectangle.Contains(ClientArea)) { - g.Clear(Options.ImageEditorBackgroundColor); + g.Clear(canvasBackgroundColor); g.DrawRectangleProper(canvasBorderPen, CanvasRectangle.Offset(1)); } diff --git a/ShareX.ScreenCaptureLib/Properties/Resources.Designer.cs b/ShareX.ScreenCaptureLib/Properties/Resources.Designer.cs index 29a047029..c289b7ea6 100644 --- a/ShareX.ScreenCaptureLib/Properties/Resources.Designer.cs +++ b/ShareX.ScreenCaptureLib/Properties/Resources.Designer.cs @@ -1408,15 +1408,6 @@ internal static string ShapeManager_CreateToolbar_Edit { } } - /// - /// Looks up a localized string similar to Editor background color.... - /// - internal static string ShapeManager_CreateToolbar_EditorBackgroundColor { - get { - return ResourceManager.GetString("ShapeManager_CreateToolbar_EditorBackgroundColor", resourceCulture); - } - } - /// /// Looks up a localized string similar to Editor start mode:. /// diff --git a/ShareX.ScreenCaptureLib/Properties/Resources.resx b/ShareX.ScreenCaptureLib/Properties/Resources.resx index 6fa18d12e..a552807ae 100644 --- a/ShareX.ScreenCaptureLib/Properties/Resources.resx +++ b/ShareX.ScreenCaptureLib/Properties/Resources.resx @@ -180,9 +180,6 @@ Distance: {6:0.00} px / Angle: {7:0.00}° ..\Resources\layer-shape-region.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - Editor background color... - ..\Resources\arrow-circle-double.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a diff --git a/ShareX.ScreenCaptureLib/RegionCaptureOptions.cs b/ShareX.ScreenCaptureLib/RegionCaptureOptions.cs index 3bf2620d5..fc00b8b71 100644 --- a/ShareX.ScreenCaptureLib/RegionCaptureOptions.cs +++ b/ShareX.ScreenCaptureLib/RegionCaptureOptions.cs @@ -86,7 +86,6 @@ public class RegionCaptureOptions public ImageEditorStartMode ImageEditorStartMode = ImageEditorStartMode.AutoSize; public WindowState ImageEditorWindowState = new WindowState(); public bool AutoCloseEditorOnTask = false; - public Color ImageEditorBackgroundColor = Color.FromArgb(200, 200, 200); public bool ShowEditorPanTip = true; public ImageEditorInterpolationMode ImageEditorResizeInterpolationMode = ImageEditorInterpolationMode.Bicubic; public Size EditorNewImageSize = new Size(800, 600); diff --git a/ShareX.ScreenCaptureLib/Shapes/ShapeManagerMenu.cs b/ShareX.ScreenCaptureLib/Shapes/ShapeManagerMenu.cs index 8821e9829..8980e0b4b 100644 --- a/ShareX.ScreenCaptureLib/Shapes/ShapeManagerMenu.cs +++ b/ShareX.ScreenCaptureLib/Shapes/ShapeManagerMenu.cs @@ -49,7 +49,7 @@ internal partial class ShapeManager private ToolStripButton tsbSaveImage, tsbBorderColor, tsbFillColor, tsbHighlightColor; private ToolStripDropDownButton tsddbShapeOptions; 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, tslnudMagnifierPixelCount, tslnudStartingStepValue, tslnudMagnifyStrength; private ToolStripLabel tslDragLeft, tslDragRight; @@ -863,21 +863,6 @@ internal void CreateToolbar() tsmiAutoCloseEditorOnTask.Click += (sender, e) => Options.AutoCloseEditorOnTask = tsmiAutoCloseEditorOnTask.Checked; 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()); } @@ -1475,12 +1460,6 @@ private void UpdateMenu() { 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()