Added shape menu to region capture window which is openable with middle mouse button

This commit is contained in:
Jaex 2016-05-03 16:28:15 +03:00
parent 7a41290dad
commit d9b606e6c0
4 changed files with 50 additions and 2 deletions

View file

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

View file

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

View file

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

View file

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