mirror of
https://github.com/ShareX/ShareX.git
synced 2024-10-01 09:47:22 +13:00
Support dark theme color in image editor background
This commit is contained in:
parent
5e2290ee6a
commit
35d6f5aaed
8 changed files with 26 additions and 67 deletions
|
@ -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
|
||||||
|
|
|
@ -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));
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -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));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1408,15 +1408,6 @@ internal static string ShapeManager_CreateToolbar_Edit {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <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>
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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()
|
||||||
|
|
Loading…
Reference in a new issue