/// <summary>Locate and image in the screen and return the coordinates (X, Y, Width, height) of the image</summary> /// <param name="path">Path of the image to look for</param> /// <param name="attempts">Amount of tries to look for the image in the screen</param> /// <param name="region">Region of the screen to look for the image, for more details look for ScreenRegions class</param> /// <param name="waitInterval">Amount of time in milliseconds to wait for each attempts before starting to look for the image again</param> public static Rect Find(string path, int attempts = 0, Rect region = null, int waitInterval = 1000) { ValidateImage(path); for (int i = 0; i <= attempts; i++) { using (ImagePattern pattern = new ImagePattern(new Bitmap(Bitmap.FromFile(path)))) { Rectangle currentRegion = region == null?RectToRectangle(ScreenRegions.Complete()) : RectToRectangle(region); Area area = new Area(currentRegion); Quellatalo.Nin.TheEyes.Match match = area.Find(pattern); if (match == null) { Thread.Sleep(waitInterval); continue; } else { return(region == null?RectangleToRect(match.Rectangle) : FixCoordinates(currentRegion, match.Rectangle)); } } } return(null); }
/// <summary>Locate and image in the screen and return true if the image is found</summary> /// <param name="image">image to look for</param> /// <param name="attempts">Amount of tries to look for the image in the screen</param> /// <param name="region">Region of the screen to look for the image, for more details look for ScreenRegions class</param> /// <param name="waitInterval">Amount of time in milliseconds to wait for each attempts before starting to look for the image again</param> public static bool Exist(Bitmap image, int attempts = 0, Rect region = null, int waitInterval = 1000) { for (int i = 0; i <= attempts; i++) { using (ImagePattern pattern = new ImagePattern(new Bitmap(image))) { Rectangle currentRegion = region == null?RectToRectangle(ScreenRegions.Complete()) : RectToRectangle(region); Area area = new Area(currentRegion); Quellatalo.Nin.TheEyes.Match match = area.Find(pattern); if (match == null) { Thread.Sleep(waitInterval); continue; } else { return(true); } } } return(false); }