mirror of
https://github.com/ShareX/ShareX.git
synced 2024-10-01 09:47:22 +13:00
Added canvas parameter to RegionCaptureForm constructor that way no need to use Prepare method
This commit is contained in:
parent
a1182e82a2
commit
525a603cf4
3 changed files with 25 additions and 50 deletions
|
@ -102,7 +102,7 @@ public Color CurrentColor
|
|||
private Bitmap bmpBackgroundImage;
|
||||
private Cursor defaultCursor;
|
||||
|
||||
public RegionCaptureForm(RegionCaptureMode mode, RegionCaptureOptions options)
|
||||
public RegionCaptureForm(RegionCaptureMode mode, RegionCaptureOptions options, Image canvas = null)
|
||||
{
|
||||
Mode = mode;
|
||||
Options = options;
|
||||
|
@ -142,6 +142,8 @@ public RegionCaptureForm(RegionCaptureMode mode, RegionCaptureOptions options)
|
|||
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));
|
||||
|
||||
Prepare(canvas);
|
||||
}
|
||||
|
||||
private void InitializeComponent()
|
||||
|
@ -239,19 +241,18 @@ internal void UpdateTitle()
|
|||
Text = text;
|
||||
}
|
||||
|
||||
public void Prepare()
|
||||
private void Prepare(Image canvas = null)
|
||||
{
|
||||
Prepare(new Screenshot().CaptureFullscreen());
|
||||
if (canvas == null)
|
||||
{
|
||||
canvas = new Screenshot().CaptureFullscreen();
|
||||
}
|
||||
|
||||
// Must be called before show form
|
||||
public void Prepare(Image img)
|
||||
{
|
||||
ShapeManager = new ShapeManager(this);
|
||||
ShapeManager.WindowCaptureMode = !IsEditorMode && Options.DetectWindows;
|
||||
ShapeManager.IncludeControls = Options.DetectControls;
|
||||
|
||||
InitBackground(img);
|
||||
InitBackground(canvas);
|
||||
|
||||
if (Mode == RegionCaptureMode.OneClick || ShapeManager.WindowCaptureMode)
|
||||
{
|
||||
|
@ -267,13 +268,13 @@ public void Prepare(Image img)
|
|||
}
|
||||
}
|
||||
|
||||
internal void InitBackground(Image img)
|
||||
internal void InitBackground(Image canvas)
|
||||
{
|
||||
if (Canvas != null) Canvas.Dispose();
|
||||
if (backgroundBrush != null) backgroundBrush.Dispose();
|
||||
if (backgroundHighlightBrush != null) backgroundHighlightBrush.Dispose();
|
||||
|
||||
Canvas = img;
|
||||
Canvas = canvas;
|
||||
|
||||
if (IsEditorMode)
|
||||
{
|
||||
|
|
|
@ -40,7 +40,6 @@ public static Image GetRegionImage(RegionCaptureOptions options)
|
|||
|
||||
using (RegionCaptureForm form = new RegionCaptureForm(RegionCaptureMode.Default, newOptions))
|
||||
{
|
||||
form.Prepare();
|
||||
form.ShowDialog();
|
||||
|
||||
return form.GetResultImage();
|
||||
|
@ -54,7 +53,6 @@ public static bool GetRectangleRegion(out Rectangle rect, RegionCaptureOptions o
|
|||
|
||||
using (RegionCaptureForm form = new RegionCaptureForm(RegionCaptureMode.Default, newOptions))
|
||||
{
|
||||
form.Prepare();
|
||||
form.ShowDialog();
|
||||
|
||||
if (form.Result == RegionResult.Region)
|
||||
|
@ -101,7 +99,6 @@ public static PointInfo GetPointInfo(RegionCaptureOptions options)
|
|||
|
||||
using (RegionCaptureForm form = new RegionCaptureForm(RegionCaptureMode.ScreenColorPicker, newOptions))
|
||||
{
|
||||
form.Prepare();
|
||||
form.ShowDialog();
|
||||
|
||||
if (form.Result == RegionResult.Region)
|
||||
|
@ -125,7 +122,6 @@ public static SimpleWindowInfo GetWindowInfo(RegionCaptureOptions options)
|
|||
|
||||
using (RegionCaptureForm form = new RegionCaptureForm(RegionCaptureMode.OneClick, newOptions))
|
||||
{
|
||||
form.Prepare();
|
||||
form.ShowDialog();
|
||||
|
||||
if (form.Result == RegionResult.Region)
|
||||
|
@ -145,7 +141,6 @@ public static void ShowScreenRuler(RegionCaptureOptions options)
|
|||
|
||||
using (RegionCaptureForm form = new RegionCaptureForm(RegionCaptureMode.Ruler, newOptions))
|
||||
{
|
||||
form.Prepare();
|
||||
form.ShowDialog();
|
||||
}
|
||||
}
|
||||
|
@ -160,10 +155,9 @@ public static Image AnnotateImage(Image img, string filePath, RegionCaptureOptio
|
|||
{
|
||||
RegionCaptureMode mode = taskMode ? RegionCaptureMode.TaskEditor : RegionCaptureMode.Editor;
|
||||
|
||||
using (RegionCaptureForm form = new RegionCaptureForm(mode, options))
|
||||
using (RegionCaptureForm form = new RegionCaptureForm(mode, options, img))
|
||||
{
|
||||
form.ImageFilePath = filePath;
|
||||
form.Prepare(img);
|
||||
form.ShowDialog();
|
||||
|
||||
switch (form.Result)
|
||||
|
|
|
@ -74,37 +74,24 @@ protected ImageInfo ExecuteRegionCapture(TaskSettings taskSettings)
|
|||
mode = RegionCaptureMode.Annotation;
|
||||
}
|
||||
|
||||
RegionCaptureForm form = new RegionCaptureForm(mode, taskSettings.CaptureSettingsReference.SurfaceOptions);
|
||||
|
||||
try
|
||||
{
|
||||
Screenshot screenshot = TaskHelpers.GetScreenshot(taskSettings);
|
||||
screenshot.CaptureCursor = false;
|
||||
Image img = screenshot.CaptureFullscreen();
|
||||
|
||||
CursorData cursorData = null;
|
||||
|
||||
try
|
||||
{
|
||||
if (taskSettings.CaptureSettings.ShowCursor)
|
||||
{
|
||||
cursorData = new CursorData();
|
||||
}
|
||||
|
||||
form.Prepare(img);
|
||||
|
||||
using (RegionCaptureForm form = new RegionCaptureForm(mode, taskSettings.CaptureSettingsReference.SurfaceOptions, img))
|
||||
{
|
||||
if (cursorData != null && cursorData.IsValid)
|
||||
{
|
||||
form.AddCursor(cursorData.Handle, cursorData.Position);
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (cursorData != null)
|
||||
{
|
||||
cursorData.Dispose();
|
||||
}
|
||||
}
|
||||
|
||||
form.ShowDialog();
|
||||
|
||||
|
@ -126,13 +113,6 @@ protected ImageInfo ExecuteRegionCapture(TaskSettings taskSettings)
|
|||
lastRegionCaptureType = RegionCaptureType.Default;
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (form != null)
|
||||
{
|
||||
form.Dispose();
|
||||
}
|
||||
}
|
||||
|
||||
return imageInfo;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue