mirror of
https://github.com/ShareX/ShareX.git
synced 2024-10-01 09:47:22 +13:00
Added shape menu to region capture window which is openable with middle mouse button
This commit is contained in:
parent
7a41290dad
commit
d9b606e6c0
4 changed files with 50 additions and 2 deletions
|
@ -281,7 +281,7 @@ public static void RadioCheck(this ToolStripMenuItem tsmi)
|
|||
{
|
||||
ToolStrip parent = tsmi.GetCurrentParent();
|
||||
|
||||
foreach (ToolStripMenuItem tsmiParent in parent.Items)
|
||||
foreach (ToolStripMenuItem tsmiParent in parent.Items.OfType<ToolStripMenuItem>())
|
||||
{
|
||||
if (tsmiParent != tsmi)
|
||||
{
|
||||
|
|
|
@ -140,12 +140,19 @@ public enum FFmpegPaletteUseDither
|
|||
|
||||
public enum ShapeType
|
||||
{
|
||||
[Description("Region: Rectangle")]
|
||||
RegionRectangle,
|
||||
[Description("Region: Rounded rectangle")]
|
||||
RegionRoundedRectangle,
|
||||
[Description("Region: Ellipse")]
|
||||
RegionEllipse,
|
||||
[Description("Region: Triangle")]
|
||||
RegionTriangle,
|
||||
[Description("Region: Diamond")]
|
||||
RegionDiamond,
|
||||
[Description("Drawing: Rectangle")]
|
||||
DrawingRectangle,
|
||||
[Description("Drawing: Rounded rectangle")]
|
||||
DrawingRoundedRectangle
|
||||
}
|
||||
|
||||
|
|
|
@ -729,7 +729,7 @@ public void UpdateRegionPath()
|
|||
|
||||
public override Image GetResultImage()
|
||||
{
|
||||
if (SurfaceImage != null)
|
||||
if (SurfaceImage != null && AreaManager.DrawingShapes.Length > 0)
|
||||
{
|
||||
using (Graphics g = Graphics.FromImage(SurfaceImage))
|
||||
{
|
||||
|
|
|
@ -139,17 +139,54 @@ public bool IsResizing
|
|||
public int MinimumSize { get; set; } = 3;
|
||||
|
||||
private RectangleRegion surface;
|
||||
private ContextMenuStrip cmsShapeMenu;
|
||||
|
||||
public AreaManager(RectangleRegion surface)
|
||||
{
|
||||
this.surface = surface;
|
||||
|
||||
CurrentShapeType = surface.Config.CurrentShapeType;
|
||||
|
||||
ResizeManager = new ResizeManager(surface, this);
|
||||
|
||||
surface.MouseDown += surface_MouseDown;
|
||||
surface.MouseUp += surface_MouseUp;
|
||||
surface.KeyDown += surface_KeyDown;
|
||||
surface.KeyUp += surface_KeyUp;
|
||||
|
||||
CreateShapeMenu();
|
||||
}
|
||||
|
||||
private void CreateShapeMenu()
|
||||
{
|
||||
cmsShapeMenu = new ContextMenuStrip();
|
||||
|
||||
foreach (ShapeType shapeType in Helpers.GetEnums<ShapeType>())
|
||||
{
|
||||
ToolStripMenuItem tsmiShapeType = new ToolStripMenuItem(shapeType.GetLocalizedDescription());
|
||||
tsmiShapeType.Checked = shapeType == CurrentShapeType;
|
||||
tsmiShapeType.Click += (sender, e) =>
|
||||
{
|
||||
tsmiShapeType.RadioCheck();
|
||||
ChangeCurrentShapeType(shapeType);
|
||||
};
|
||||
cmsShapeMenu.Items.Add(tsmiShapeType);
|
||||
}
|
||||
|
||||
cmsShapeMenu.Items.Add(new ToolStripSeparator());
|
||||
|
||||
ToolStripMenuItem tsmiChangeBorderColor = new ToolStripMenuItem("Change border color...");
|
||||
cmsShapeMenu.Items.Add(tsmiChangeBorderColor);
|
||||
ToolStripMenuItem tsmiChangeBorderSize = new ToolStripMenuItem("Change border size...");
|
||||
cmsShapeMenu.Items.Add(tsmiChangeBorderSize);
|
||||
ToolStripMenuItem tsmiChangeFillColor = new ToolStripMenuItem("Change fill color...");
|
||||
cmsShapeMenu.Items.Add(tsmiChangeFillColor);
|
||||
|
||||
cmsShapeMenu.Items.Add(new ToolStripSeparator());
|
||||
|
||||
ToolStripMenuItem tsmiCloseMenu = new ToolStripMenuItem("Close");
|
||||
tsmiCloseMenu.Click += (sender, e) => cmsShapeMenu.Close();
|
||||
cmsShapeMenu.Items.Add(tsmiCloseMenu);
|
||||
}
|
||||
|
||||
private void surface_KeyDown(object sender, KeyEventArgs e)
|
||||
|
@ -434,6 +471,10 @@ private void surface_MouseUp(object sender, MouseEventArgs e)
|
|||
EndRegionSelection();
|
||||
}
|
||||
}
|
||||
else if (e.Button == MouseButtons.Middle)
|
||||
{
|
||||
cmsShapeMenu.Show(surface, e.Location);
|
||||
}
|
||||
}
|
||||
|
||||
private void RegionSelection(Point location)
|
||||
|
|
Loading…
Reference in a new issue