コード例 #1
0
        public MyPic(Bitmap bIn, bool forBlackWhite)
        {
            this.Size      = bIn.Size;
            this.pTreshold = MyPicPixelInfoEnum.e3_mid;
            PixelInfoArray = new MyPicPixelInfoEnum[(Size.Width * Size.Height) + 1];

            for (int y = 0; y < Size.Height; y++)
            {
                for (int x = 0; x < Size.Width; x++)
                {
                    Color c      = bIn.GetPixel(x, y);
                    int   rgbTot = (int)c.R + (int)c.G + (int)c.B;
                    float rgbF   = (float)rgbTot / 255 / 3;
                    float b      = c.GetBrightness();
                    MyPicPixelInfoEnum e;
                    switch (c.A)
                    {
                    case 255:
                        // no transparenty
                        e = BrightnessToEnum(rgbF);
                        PixelInfoArray[toIndex(x, y)] = e;
                        break;

                    case 0:
                        // full transparenty
                        PixelInfoArray[toIndex(x, y)] = MyPicPixelInfoEnum.e7;
                        break;

                    default:
                        throw new ArgumentException("Alpha");
                    }
                }
            }
        }
コード例 #2
0
        public MyPic(Bitmap bIn)
        {
            this.Size           = bIn.Size;
            this.pTreshold      = MyPicPixelInfoEnum.e3_mid;
            this.PixelInfoArray = new MyPicPixelInfoEnum[(Size.Width * Size.Height) + 1];

            for (int y = 0; y < Size.Height; y++)
            {
                for (int x = 0; x < Size.Width; x++)
                {
                    float b    = bIn.GetPixel(x, y).GetBrightness();
                    int   max  = (int)MyPic.MyPicPixelInfoEnum._e_end;
                    int   curI = 0;
                    float curF = 0.0f;
                    float step = 1 / (float)max;
                    while (true)
                    {
                        if (b <= curF)
                        {
                            // set and end
                            PixelInfoArray[toIndex(x, y)] = (MyPicPixelInfoEnum)curI;
                            break;
                        }
                        curI++;
                        curF += step;
                    }
                }
            }
        }
コード例 #3
0
        public PixelInfo getPixel(int x, int y)
        {
            MyPicPixelInfoEnum v = PixelInfoArray[toIndex(x, y)];

            if (v == MyPicPixelInfoEnum.Processed)
            {
                return(PixelInfo.Processed);
            }
            PixelInfo r = (v <= pTreshold) ? PixelInfo.Black : PixelInfo.White;

            return(r);
        }
コード例 #4
0
        public void ToFile_allTreshlds(string fileNoExtension)
        {
            MyPicPixelInfoEnum backup = pTreshold;

            pTreshold = MyPicPixelInfoEnum.e0;
            while (pTreshold < MyPicPixelInfoEnum._e_end)
            {
                ToFile(fileNoExtension + pTreshold.ToString());
                pTreshold++;
            }
            pTreshold = backup;
        }
コード例 #5
0
        public void setPixel(int x, int y, PixelInfo val)
        {
            MyPicPixelInfoEnum eOldVal = PixelInfoArray[toIndex(x, y)];

            switch (val)
            {
            case PixelInfo.Black: PixelInfoArray[toIndex(x, y)] = MyPicPixelInfoEnum.e0; break;

            case PixelInfo.White: PixelInfoArray[toIndex(x, y)] = MyPicPixelInfoEnum._e_end - 1; break;

            case PixelInfo.Processed: PixelInfoArray[toIndex(x, y)] = MyPicPixelInfoEnum.Processed; break;
            }
        }
コード例 #6
0
        public MyPic(ObjectPoints objectPoints)
        {
            this.Size           = objectPoints.Rect.Size;
            this.pTreshold      = MyPicPixelInfoEnum.e3_mid;
            this.PixelInfoArray = new MyPicPixelInfoEnum[(Size.Width * Size.Height) + 1];

            foreach (Point p1 in objectPoints.Points)
            {
                Point p00      = new Point(p1.X - objectPoints.XLeft, p1.Y - objectPoints.YTop);
                int   arrayPos = p00.X + (p00.Y * this.Size.Width);
                this.PixelInfoArray[arrayPos] = MyPicPixelInfoEnum.e7;
            }
        }
コード例 #7
0
        public MyPic(Size Size, PixelInfo backgroundColor)
        {
            this.Size      = Size;
            this.pTreshold = MyPicPixelInfoEnum.e3_mid;
            PixelInfoArray = new MyPicPixelInfoEnum[(Size.Width * Size.Height) + 1];
            SlowDown slowDown = new SlowDown();

            for (int y = 0; y < Size.Height; y++)
            {
                for (int x = 0; x < Size.Width; x++)
                {
                    slowDown.Next();
                    setPixel(x, y, backgroundColor);
                }
            }
        }
コード例 #8
0
 public MyPic(Size Size)
 {
     this.Size      = Size;
     this.pTreshold = MyPicPixelInfoEnum.e3_mid;
     PixelInfoArray = new MyPicPixelInfoEnum[(Size.Width * Size.Height) + 1];
 }
コード例 #9
0
 public void setPixel2(int x, int y, MyPicPixelInfoEnum val)
 {
     PixelInfoArray[toIndex(x, y)] = val;
 }
コード例 #10
0
        public MyPicPixelInfoEnum getPixel2(int x, int y)
        {
            MyPicPixelInfoEnum v = PixelInfoArray[toIndex(x, y)];

            return(v);
        }