fixed #3039: Added "Insert image from screen" button to editor image menu

This commit is contained in:
Jaex 2017-12-31 21:39:13 +03:00
parent eaad524a89
commit cc3a22465d
2 changed files with 51 additions and 27 deletions

View file

@ -29,6 +29,7 @@
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Linq;
using System.Threading;
using System.Windows.Forms;
namespace ShareX.ScreenCaptureLib
@ -1406,16 +1407,7 @@ private void PasteFromClipboard(bool insertMousePosition)
{
Image img = ClipboardHelpers.GetImage();
if (img != null)
{
CurrentTool = ShapeType.DrawingImage;
ImageDrawingShape shape = (ImageDrawingShape)CreateShape(ShapeType.DrawingImage);
shape.Rectangle = new Rectangle(pos.X, pos.Y, 1, 1);
shape.SetImage(img, true);
shape.OnCreated();
AddShape(shape);
SelectCurrentShape();
}
InsertImage(img, pos);
}
else if (Clipboard.ContainsText())
{
@ -1529,7 +1521,7 @@ private void LoadImageFile(string filePath)
}
}
private void InsertImage()
private void InsertImageFile()
{
string filePath = ImageHelpers.OpenImageFileDialog(Form);
@ -1537,17 +1529,44 @@ private void InsertImage()
{
Image img = ImageHelpers.LoadImage(filePath);
if (img != null)
{
CurrentTool = ShapeType.DrawingImage;
ImageDrawingShape shape = (ImageDrawingShape)CreateShape(ShapeType.DrawingImage);
Point pos = Form.ClientArea.Center();
shape.Rectangle = new Rectangle(pos.X, pos.Y, 1, 1);
shape.SetImage(img, true);
shape.OnCreated();
AddShape(shape);
SelectCurrentShape();
}
InsertImage(img, Form.ClientArea.Center());
}
}
private void InsertImageFromScreen()
{
Image img;
try
{
Form.Pause();
Form.Hide();
menuForm.Hide();
Thread.Sleep(250);
img = RegionCaptureTasks.GetRegionImage(Options);
}
finally
{
Form.Show();
menuForm.Show();
Form.Resume();
}
InsertImage(img, Form.ClientArea.Center());
}
private void InsertImage(Image img, Point pos)
{
if (img != null)
{
CurrentTool = ShapeType.DrawingImage;
ImageDrawingShape shape = (ImageDrawingShape)CreateShape(ShapeType.DrawingImage);
shape.Rectangle = new Rectangle(pos.X, pos.Y, 1, 1);
shape.SetImage(img, true);
shape.OnCreated();
AddShape(shape);
SelectCurrentShape();
}
}

View file

@ -640,15 +640,20 @@ internal void CreateToolbar()
};
tsddbImage.DropDownItems.Add(tsmiNewImage);
ToolStripMenuItem tsmiOpenImage = new ToolStripMenuItem("Open image...");
ToolStripMenuItem tsmiOpenImage = new ToolStripMenuItem("Open image file...");
tsmiOpenImage.Image = Resources.folder_open_image;
tsmiOpenImage.Click += (sender, e) => OpenImageFile();
tsddbImage.DropDownItems.Add(tsmiOpenImage);
ToolStripMenuItem tsmiInsertImage = new ToolStripMenuItem("Insert image...");
tsmiInsertImage.Image = Resources.image__plus;
tsmiInsertImage.Click += (sender, e) => InsertImage();
tsddbImage.DropDownItems.Add(tsmiInsertImage);
ToolStripMenuItem tsmiInsertImageFile = new ToolStripMenuItem("Insert image file...");
tsmiInsertImageFile.Image = Resources.image__plus;
tsmiInsertImageFile.Click += (sender, e) => InsertImageFile();
tsddbImage.DropDownItems.Add(tsmiInsertImageFile);
ToolStripMenuItem tsmiInsertImageFromScreen = new ToolStripMenuItem("Insert image from screen...");
tsmiInsertImageFromScreen.Image = Resources.camera;
tsmiInsertImageFromScreen.Click += (sender, e) => InsertImageFromScreen();
tsddbImage.DropDownItems.Add(tsmiInsertImageFromScreen);
tsddbImage.DropDownItems.Add(new ToolStripSeparator());