Added canvas parameter to RegionCaptureForm constructor that way no need to use Prepare method

This commit is contained in:
Jaex 2017-12-03 13:46:19 +03:00
parent a1182e82a2
commit 525a603cf4
3 changed files with 25 additions and 50 deletions

View file

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

View file

@ -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 void ShowScreenRuler(RegionCaptureOptions options)
{
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)

View file

@ -74,36 +74,23 @@ protected ImageInfo ExecuteRegionCapture(TaskSettings taskSettings)
mode = RegionCaptureMode.Annotation;
}
RegionCaptureForm form = new RegionCaptureForm(mode, taskSettings.CaptureSettingsReference.SurfaceOptions);
Screenshot screenshot = TaskHelpers.GetScreenshot(taskSettings);
screenshot.CaptureCursor = false;
Image img = screenshot.CaptureFullscreen();
try
CursorData cursorData = null;
if (taskSettings.CaptureSettings.ShowCursor)
{
Screenshot screenshot = TaskHelpers.GetScreenshot(taskSettings);
screenshot.CaptureCursor = false;
Image img = screenshot.CaptureFullscreen();
cursorData = new CursorData();
}
CursorData cursorData = null;
try
using (RegionCaptureForm form = new RegionCaptureForm(mode, taskSettings.CaptureSettingsReference.SurfaceOptions, img))
{
if (cursorData != null && cursorData.IsValid)
{
if (taskSettings.CaptureSettings.ShowCursor)
{
cursorData = new CursorData();
}
form.Prepare(img);
if (cursorData != null && cursorData.IsValid)
{
form.AddCursor(cursorData.Handle, cursorData.Position);
}
}
finally
{
if (cursorData != null)
{
cursorData.Dispose();
}
form.AddCursor(cursorData.Handle, cursorData.Position);
cursorData.Dispose();
}
form.ShowDialog();
@ -126,13 +113,6 @@ protected ImageInfo ExecuteRegionCapture(TaskSettings taskSettings)
lastRegionCaptureType = RegionCaptureType.Default;
}
}
finally
{
if (form != null)
{
form.Dispose();
}
}
return imageInfo;
}