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();
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

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)
{
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));

View file

@ -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;
}
}

View file

@ -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));
}

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>
/// Looks up a localized string similar to Editor start mode:.
/// </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">
<value>..\Resources\layer-shape-region.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</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">
<value>..\Resources\arrow-circle-double.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>

View file

@ -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);

View file

@ -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()