private void htmlScreenCapture_HtmlScreenCaptureAvailable_ChangeTest(object sender, HtmlScreenCaptureAvailableEventArgs e) { // get the bitmap Bitmap bitmap = e.Bitmap; int totalPixels = 0; if (testBitmap == null) { testBitmap = (Bitmap)e.Bitmap.Clone(); } int countPixels = 0; //only doing some pixels to speed this up! for (int x = 0; x < bitmap.Width; x += 8) { for (int y = 0; y < bitmap.Height; y += 8) { totalPixels++; if (bitmap.GetPixel(x, y) == testBitmap.GetPixel(x, y)) { countPixels++; } } } // if more than 80% of all pixels the same as first look then // this is not a thumbnail double pctBackground = Convert.ToDouble(countPixels) / Convert.ToDouble(totalPixels); //Trace.WriteLine("difference in snapshots: " + pctBackground.ToString()); e.CaptureCompleted = pctBackground < .80F || TimedOut; }
void htmlScreenCapture_HtmlScreenCaptureAvailable_RectangleTest(object sender, HtmlScreenCaptureAvailableEventArgs e) { Bitmap bitmap = e.Bitmap; int xRect = (int)Math.Round(bitmap.Width * rectTest.X - (rectTest.Width / 2)); int yRect = (int)Math.Round(bitmap.Height * rectTest.Y - (rectTest.Height / 2)); int nonMatchingPixelCount = 0; for (int x = xRect; x < xRect + rectTest.Width; x++) { for (int y = yRect; y < yRect + rectTest.Height; y++) { Color color = bitmap.GetPixel(x, y); if (color.A != rectTest.Color.A || color.R != rectTest.Color.R || color.G != rectTest.Color.G || color.B != rectTest.Color.B) { nonMatchingPixelCount++; } } } e.CaptureCompleted = nonMatchingPixelCount == 0 || TimedOut; }
private void htmlScreenCapture_HtmlScreenCaptureAvailable_ColorTest(object sender, HtmlScreenCaptureAvailableEventArgs e) { const int PLAYER_CONTROL_OFFSET = 30; // get the bitmap Bitmap bitmap = e.Bitmap; int pixelCount = 0; for (int x = 0; x < bitmap.Width; x++) { for (int y = 0; y < bitmap.Height - PLAYER_CONTROL_OFFSET; y++) { if (bitmap.GetPixel(x, y) == testColor) { pixelCount++; } } } int totalPixels = bitmap.Width * (bitmap.Height - PLAYER_CONTROL_OFFSET); double pctBackground = Convert.ToDouble(pixelCount) / Convert.ToDouble(totalPixels); //Trace.WriteLine("how much test Color: " + pctBackground.ToString()); e.CaptureCompleted = pctBackground < testPct || TimedOut; }