public static bool ImageSearchCSharp([MarshalAs(UnmanagedType.LPStr)] string imagePath, Rectangle window) { var screenCap = new CaptureImage().CaptureFromScreen(window); var searchImage = new Bitmap(imagePath); var result = IsInCapture(searchImage, screenCap); return(result); }
public string[] ImageSearchAutoIt([MarshalAs(UnmanagedType.LPStr)] string imgPath, Rectangle window, string tolerance = "20") { var autoitImagePath = "*" + tolerance + " " + imgPath; var result = ImageSearch(window.X, window.Y, window.Width, window.Height, autoitImagePath); var res = Marshal.PtrToStringAnsi(result); if (res[0] == '0') { return(null); } var data = res.Split('|'); int.TryParse(data[1], out var x); int.TryParse(data[2], out var y); //TODO: Add "if debug" here and in other IS functions var absWindowX = Math.Abs(window.X); var absWindowY = Math.Abs(window.Y); var resX = Math.Abs(x); var resY = Math.Abs(y); int testX; if (resX > absWindowX) { testX = resX - absWindowX; } else { testX = absWindowX - resX; } var testY = resY - absWindowY; var screenCap = new CaptureImage().CaptureFromScreen(window); var source = new Image <Bgr, byte>(screenCap); var template = new Image <Bgr, byte>(imgPath); var imageToShow = source.Copy(); var match = new Rectangle(new Point(testX, testY), template.Size); imageToShow.Draw(match, new Bgr(Color.Red), 2); DebugForm.DebugPictureBox.Invoke( new MethodInvoker(delegate { DebugForm.DebugPictureBox.Image = imageToShow.Bitmap; })); return(data); }
public static Bitmap CaptureDWM() { if (thumb != IntPtr.Zero) { DwmUnregisterThumbnail(thumb); } int windowWidth; if (DebugForm.WindowRect.X > DebugForm.WindowRect.Width) { windowWidth = DebugForm.WindowRect.X - DebugForm.WindowRect.Width; } else { windowWidth = DebugForm.WindowRect.Width - DebugForm.WindowRect.X; } var windowHeight = DebugForm.WindowRect.Height - DebugForm.WindowRect.Y; var dwmCaptureForm = new Form { Text = "DWM Capture Window", Width = windowWidth + 15, Height = windowHeight + 32, Left = 0, Top = 0, TopMost = true }; dwmCaptureForm.Show(); int i = DwmRegisterThumbnail(dwmCaptureForm.Handle, DebugForm.WindowHandle, out thumb); if (i == 0) { DWMFunctions.UpdateThumb(); } DebugForm.GetWindowRect(dwmCaptureForm.Handle, out var dwmCapRectangle); var dwmCapture = new CaptureImage().CaptureFromScreen(dwmCapRectangle); DebugForm.DebugPictureBox.Invoke( new MethodInvoker(delegate { DebugForm.DebugPictureBox.Image = dwmCapture; })); DwmUnregisterThumbnail(thumb); dwmCaptureForm.Close(); return(dwmCapture); }