コード例 #1
0
        /// <summary>
        /// Returns the actual number on the bitmap box
        /// </summary>
        /// <param name="bm">The bitmap image of a single square</param>
        /// <returns></returns>
        public static int Analyze(Bitmap bm, string nameeOfImage)
        {
            SSC.TakeASnap(bm, nameeOfImage);
            int w = bm.Size.Width;
            int h = bm.Size.Height;

            int orgW = w;

            w = w - 4;      // width itterater

            if (PixelInt.B(bm, w / 3, h / 3) == 250 && PixelInt.B(bm, w / 4, h / 4) == 250 && PixelInt.B(bm, (2 * w) / 5, h / 4) == 250)
            {
                return(0);
            }

            for (; w <= orgW + 4; w += 4)
            {
                for (int x = 14; x < h - 10; x += 7)
                {
                    if (PixelInt.B(bm, w / 2, x) > 180 && PixelInt.R(bm, w / 2, x) > 175 && PixelInt.G(bm, w / 2, x) > 180)
                    {
                        continue;
                    }
                    else if ((int)bm.GetPixel(w / 2, x).B > 180 && (int)bm.GetPixel(w / 2, x).R < 90 && (int)bm.GetPixel(w / 2, x).G < 100)
                    {
                        if ((int)bm.GetPixel(orgW / 3, h / 2).R < 170 && PixelInt.G(bm, orgW / 3, h / 2) < 180) //&& PixelInt.B(bm, orgW / 3, h/2) < 210)
                        {
                            return(-8);                                                                         //Blue unopened square
                        }
                        else
                        {
                            return(1);
                        }
                    }
                    else if ((int)bm.GetPixel(w / 2, x).B < 20 && (int)bm.GetPixel(w / 2, x).R < 50 && (int)bm.GetPixel(w / 2, x).G > 100)
                    {
                        return(2);
                    }
                    else if ((int)bm.GetPixel(w / 2, x).B < 20 && (int)bm.GetPixel(w / 2, x).R > 150 && (int)bm.GetPixel(w / 2, x).G < 20)
                    {
                        if ((int)bm.GetPixel(w / 2 - 4, h / 2).B < 10 && (int)bm.GetPixel(w / 2 - 4, h / 2).R > 150 && (int)bm.GetPixel(w / 2 - 4, h / 2).G < 10)
                        {
                            return(3);
                        }
                        else
                        {
                            return(7);
                        }
                    }
                    else if ((int)bm.GetPixel(w / 2, x).B > 120 && (int)bm.GetPixel(w / 2, x).B < 140 && (int)bm.GetPixel(w / 2, x).R < 10 && (int)bm.GetPixel(w / 2, x).G < 10)
                    {
                        return(4);
                    }
                    else if ((int)bm.GetPixel(w / 2, x).B < 10 && (int)bm.GetPixel(w / 2, x).R > 110 && (int)bm.GetPixel(w / 2, x).R < 140 && (int)bm.GetPixel(w / 2, x).G < 10)
                    {
                        return(5);
                    }
                    else if ((int)bm.GetPixel(w / 2, x).B > 110 && (int)bm.GetPixel(w / 2, x).R < 10 && (int)bm.GetPixel(w / 2, x).G > 110)
                    {
                        return(6);
                    }
                    else if ((int)bm.GetPixel(orgW / 3, x).B > 220 && (int)bm.GetPixel(orgW / 3, x).R < 200)
                    {
                        return(-8);          //Blue unopened square
                    }
                }
            }

            return(0);
        }