Currently I use this to find a bitmap that occurs in another image on the screen i.e. a window but it is tool slow, i want it to take 1 or less seconds, I was thinking of cropping the image into a section i.e. a 80,60 section at point 0,0 of the image and searching there, when it has done that it do the same crop but y+60 and continue until it has covered the full image assuming it is 800 by 600 pixel
the code i currently use is:
public bool findImage(Bitmap small, Bitmap large, out Point location) { //Loop through large images width for (int largeX = 0; largeX < large.Width; largeX++) { //And height for (int largeY = 0; largeY < large.Height; largeY++) { //Loop through the small width for (int smallX = 0; smallX < small.Width; smallX++) { //And height for (int smallY = 0; smallY < small.Height; smallY++) { //Get current pixels for both image Color currentSmall = small.GetPixel(smallX, smallY); Color currentLarge = large.GetPixel(largeX + smallX, largeY + smallY); //If they dont match (i.e. the image is not there) if (!colorsMatch(currentSmall, currentLarge)) //Goto the next pixel in the large image goto nextLoop; } } //If all the pixels match up, then return true and change Point location to the top left co-ordinates where it was found location = new Point(largeX, largeY); return true; //Go to next pixel on large image nextLoop: continue; } } //Return false if image is not found, and set an empty point location = Point.Empty; return false; }