1 /// <summary> 2 /// 擷取主體矩形邊界座標,順時針 3 /// </summary> 4 /// <param name="bmpTg">靶心圖表片</param> 5 /// <param name="bmpMT">模板圖片</param> 6 /// <returns></returns> 7 private static Point[] GetTarget(Bitmap bmpTg, Bitmap bmpMT) 8 { 9 //主體矩形邊界座標,順時針10 Point[] points ={11 new Point(0,0),12 new Point(0,0),13 new Point(0,0),14 new Point(0,0),15 };16 17 int tmpRGB = 0;18 for (int tgx = 0; tgx < bmpTg.Width - bmpMT.Width; tgx++)19 {20 for (int tgy = 0; tgy < bmpTg.Height - bmpMT.Height; tgy++)21 {22 bool faild = false;23 for (int mtx = 0; mtx < bmpMT.Width; mtx++)24 {25 for (int mty = 0; mty < bmpMT.Height; mty++)26 {27 if (bmpMT.GetPixel(mtx, mty).B > 150)28 continue;29 tmpRGB = bmpTg.GetPixel(tgx + mtx, tgy + mty).B - bmpMT.GetPixel(mtx, mty).B;30 tmpRGB = tmpRGB > 0 ? tmpRGB : tmpRGB * (-1);31 if (tmpRGB > 150)32 {33 faild = true;34 continue;35 }36 }37 }38 if (faild)39 {40 continue;41 }42 points[0].X = tgx;43 points[0].Y = tgy;44 points[1].X = tgx + bmpMT.Width;45 points[1].Y = tgy;46 points[2].X = tgx;47 points[2].Y = tgy + bmpMT.Height;48 points[3].X = tgx + bmpMT.Width;49 points[3].Y = tgy + bmpMT.Height;50 return points;51 }52 }53 return points;54 }