diff --git a/ShareX.ScreenCaptureLib/Forms/RegionCaptureForm.cs b/ShareX.ScreenCaptureLib/Forms/RegionCaptureForm.cs index bd781cff5..7c8b06a86 100644 --- a/ShareX.ScreenCaptureLib/Forms/RegionCaptureForm.cs +++ b/ShareX.ScreenCaptureLib/Forms/RegionCaptureForm.cs @@ -195,36 +195,33 @@ public void Prepare(Image img) backgroundBrush = new TextureBrush(Image) { WrapMode = WrapMode.Clamp }; } - if (Config != null) + ShapeManager = new ShapeManager(this); + ShapeManager.WindowCaptureMode = Config.DetectWindows; + ShapeManager.IncludeControls = Config.DetectControls; + + if (IsAnnotationMode) { - ShapeManager = new ShapeManager(this); - ShapeManager.WindowCaptureMode = Config.DetectWindows; - ShapeManager.IncludeControls = Config.DetectControls; + ShapeManager.CurrentShapeTypeChanged += ShapeManager_CurrentShapeTypeChanged; - if (IsAnnotationMode) + ShapeManager_CurrentShapeTypeChanged(ShapeManager.CurrentShapeType); + } + + if (Mode == RegionCaptureMode.OneClick || ShapeManager.WindowCaptureMode) + { + IntPtr handle = Handle; + + TaskEx.Run(() => { - ShapeManager.CurrentShapeTypeChanged += ShapeManager_CurrentShapeTypeChanged; + WindowsRectangleList wla = new WindowsRectangleList(); + wla.IgnoreHandle = handle; + wla.IncludeChildWindows = ShapeManager.IncludeControls; + ShapeManager.Windows = wla.GetWindowInfoListAsync(5000); + }); + } - ShapeManager_CurrentShapeTypeChanged(ShapeManager.CurrentShapeType); - } - - if (Mode == RegionCaptureMode.OneClick || ShapeManager.WindowCaptureMode) - { - IntPtr handle = Handle; - - TaskEx.Run(() => - { - WindowsRectangleList wla = new WindowsRectangleList(); - wla.IgnoreHandle = handle; - wla.IncludeChildWindows = ShapeManager.IncludeControls; - ShapeManager.Windows = wla.GetWindowInfoListAsync(5000); - }); - } - - if (Config.UseCustomInfoText || Mode == RegionCaptureMode.ScreenColorPicker) - { - bmpBackgroundImage = new Bitmap(Image); - } + if (Config.UseCustomInfoText || Mode == RegionCaptureMode.ScreenColorPicker) + { + bmpBackgroundImage = new Bitmap(Image); } } @@ -1096,7 +1093,7 @@ public Image GetResultImage() { foreach (BaseShape shape in ShapeManager.Shapes) { - shape.Rectangle = new Rectangle(shape.Rectangle.X - ImageRectangle.X, shape.Rectangle.Y - ImageRectangle.Y, shape.Rectangle.Width, shape.Rectangle.Height); + shape.Move(-ImageRectangle.X, -ImageRectangle.Y); } return GetOutputImage(); diff --git a/ShareX.ScreenCaptureLib/Shapes/Drawing/SpeechBalloonDrawingShape.cs b/ShareX.ScreenCaptureLib/Shapes/Drawing/SpeechBalloonDrawingShape.cs index e7b0ba5c1..296b59e08 100644 --- a/ShareX.ScreenCaptureLib/Shapes/Drawing/SpeechBalloonDrawingShape.cs +++ b/ShareX.ScreenCaptureLib/Shapes/Drawing/SpeechBalloonDrawingShape.cs @@ -60,7 +60,7 @@ public override void OnCreated() { base.OnCreated(); - TailPosition = Rectangle.Location.Add(-30, -30); + TailPosition = Rectangle.Location.Add(0, Rectangle.Height + 30); } public override void OnNodeVisible() @@ -82,6 +82,13 @@ public override void OnNodeUpdate() } } + public override void Move(int x, int y) + { + base.Move(x, y); + + TailPosition = TailPosition.Add(x, y); + } + public override void OnDraw(Graphics g) { if (Rectangle.Width > 10 && Rectangle.Height > 10)