protected override void OnPaint(PaintEventArgs e) { mousePos = ScreenHelper.ScreenToClient(ScreenHelper.GetCursorPosition()); activeMonitor = ScreenHelper.GetActiveScreenBounds0Based(); Graphics g = e.Graphics; g.PixelOffsetMode = PixelOffsetMode.HighSpeed; g.InterpolationMode = InterpolationMode.NearestNeighbor; g.SmoothingMode = SmoothingMode.HighQuality; // for some reason highspeed crashes the window g.CompositingQuality = CompositingQuality.HighSpeed; g.CompositingMode = CompositingMode.SourceCopy; g.FillRectangle(backgroundBrush, clientArea); g.CompositingMode = CompositingMode.SourceOver; DrawMouseGraphics(g); if (SettingsManager.RegionCaptureSettings.Draw_Marching_Ants) { borderDotPen.DashOffset += 0.25f; if (borderDotPen.DashOffset > 10) { borderDotPen.DashOffset = 0; } Invalidate(); } }
/// <summary> /// Gets the RegionCaptureInfo for the given region capture. /// </summary> /// <returns> The image/color captured and other info.</returns> public RegionReturn GetRsult() { if (result == RegionResult.Region) { if (leftClickStart.X < leftClickStop.X) { leftClickStop = new Point(leftClickStop.X + 1, leftClickStop.Y); } else { leftClickStop = new Point(leftClickStop.X - 1, leftClickStop.Y); } if (leftClickStart.Y < leftClickStop.Y) { leftClickStop = new Point(leftClickStop.X, leftClickStop.Y + 1); } else { leftClickStop = new Point(leftClickStop.X, leftClickStop.Y - 1); } } switch (result) { case RegionResult.Close: return(new RegionReturn(RegionResult.Close)); case RegionResult.Region: return(new RegionReturn( RegionResult.Region, PointToScreen(leftClickStart), PointToScreen(leftClickStop), Helper.CreateRect(leftClickStart, leftClickStop), ImageProcessor.GetCroppedBitmap(leftClickStart, leftClickStop, image, PixelFormat.Format24bppRgb))); case RegionResult.LastRegion: return(new RegionReturn( RegionResult.LastRegion, LastRegionReturn.StartLeftClick, LastRegionReturn.StopLeftClick, LastRegionReturn.Region, ImageProcessor.GetCroppedBitmap(LastRegionReturn.Region, image, PixelFormat.Format24bppRgb))); case RegionResult.Fullscreen: return(new RegionReturn(RegionResult.Fullscreen, true, image)); case RegionResult.ActiveMonitor: return(new RegionReturn( Screen.FromPoint(ScreenHelper.GetCursorPosition()), ImageProcessor.GetCroppedBitmap(ScreenHelper.GetActiveScreenBounds0Based(), image, PixelFormat.Format24bppRgb))); case RegionResult.Color: return(new RegionReturn( PointToScreen(leftClickStop), image.GetPixel(leftClickStop.X, leftClickStop.Y))); } return(null); }