All pastes #122799 Raw Edit

Anonymous

public text v1 · immutable
·published 2006-08-08 22:49 UTC
rendered paste body
Here works thread
int i - row where he works
if i == 0 , then other thread is working
private void Work() {
			for (int i = 0; i < _workPool.Length; i++) {
				if (_workPool[i] == 0) {
					_workPool[i] = 1;
					#region Work
					int x = i * 40;
					#endregion
					int miss = 0;
					for (int y = 0; (y + 40) < 240; y += 40) {
						try {
							Bitmap bCur = image.Clone(new Rectangle(x, y, 40, 40), PixelFormat.Format24bppRgb);
							Bitmap bOld = old.Clone(new Rectangle(x, y, 40, 40), PixelFormat.Format24bppRgb);
							miss = Check(bCur, bOld);
						} catch{
							miss = 0;
						}
						if (miss > 50) {
							while (true) {
								try {
									g.FillRectangle(this.brush, new Rectangle(x, y, x + 40, y + 40));
									break;
								} catch {}
							}
						}						
					}
					//Console.WriteLine("Working on:{0}\tMiss:{1}%", x,miss);
					_workDone += 1;
				}
				
			}
			//Console.WriteLine("Thread:{0} has finished work", Thread.CurrentThread.Name);
			
		}

lets continue, comparing, and getting %
public int Check(Bitmap n, Bitmap o) {
			int miss = 0;
			int w = n.Width;
			int h = n.Height;
			int all = ((w - 1) * (h - 1));
			//vertical
			for (int x = 0; x < w; x += 1) {
				//horizontal
				for (int y = 0; y < h; y += 1) {
					Color c1 = n.GetPixel(x, y);
					Color c2 = o.GetPixel(x, y);
					if (Look((int)c1.R, (int)c1.B, (int)c1.G, (int)c2.R, (int)c2.B, (int)c2.G)) {
						miss += 1;
					}

				}
			}
			double a = miss;
			double b = all;
			double c = ((a / b) * 100);
			miss = (int)c;
			return miss;
		}
and checking two pixels
public bool Look(int r1, int b1, int g1, int r2, int b2, int g2) {
			int s1 = skirt(r1,r2);
			int s2 = skirt(g1, g2);
			int s3 = skirt(b1, b2);
			int s = s1 + s2 + s3;
			if (s > 50) {
				return true;
			} else {
				return false;
			}
		}
and checking pixels value diff
public int skirt(int n1, int n2) {
			int k = n1 - n2;
			if (k < 0) {
				k = k * -1;
			}
			return k;
		}