Ejemplo n.º 1
0
        void CreatePartition(Bitmap bmp)
        {
            Partition = new RectPartition(bmp, Filtered);
            Frame     = Partition.Frame;
            int numBytes = Partition.GetNumPixels(Filtered) * GetBytesPerPixel(ClrFormat);

            //  get pixels
            Bytes = new byte[numBytes];
            int curByte = 0;

            for (int k = 0; k < Partition.Rects.Count; k++)
            {
                Frame rc = (Frame)Partition.Rects[k];
                int   bX, bY, eX, eY;
                if (Filtered)
                {
                    bX = -1;
                    eX = rc.w + 1;
                    bY = -1;
                    eY = rc.h + 1;
                    if (rc.x + eX > Frame.x + Frame.w + 1)
                    {
                        eX = Frame.x + Frame.w - rc.x + 1;
                    }
                    if (rc.y + eY > Frame.y + Frame.h + 1)
                    {
                        eY = Frame.y + Frame.h - rc.y + 1;
                    }
                }
                else
                {
                    bX = 0;
                    eX = rc.w;
                    bY = 0;
                    eY = rc.h;
                    if (rc.x + eX > Frame.x + Frame.w)
                    {
                        eX = Frame.x + Frame.w - rc.x;
                    }
                    if (rc.y + eY > Frame.y + Frame.h)
                    {
                        eY = Frame.y + Frame.h - rc.y;
                    }
                }

                for (int j = bY; j < eY; j++)
                {
                    for (int i = bX; i < eX; i++)
                    {
                        Color clr = GetPixel(bmp, rc.x + i, rc.y + j);
                        curByte += AddColor(ref Bytes, curByte, clr, ClrFormat);
                    }
                }
            }
        }
Ejemplo n.º 2
0
 public Sprite()
 {
     Frame = new Frame();
     Partition = new RectPartition();
     Difference = false;
 }
Ejemplo n.º 3
0
 public Sprite()
 {
     Frame      = new Frame();
     Partition  = new RectPartition();
     Difference = false;
 }
Ejemplo n.º 4
0
        void CreatePartition( Bitmap bmp )
        {
            Partition     = new RectPartition( bmp, Filtered );
            Frame         = Partition.Frame;
            int numBytes  = Partition.GetNumPixels( Filtered )*GetBytesPerPixel( ClrFormat );

            //  get pixels
            Bytes = new byte[numBytes];
            int curByte = 0;
            for (int k = 0; k < Partition.Rects.Count; k++)
            {
                Frame rc = (Frame)Partition.Rects[k];
                int bX, bY, eX, eY;
                if (Filtered)
                {
                    bX = -1;
                    eX = rc.w + 1;
                    bY = -1;
                    eY = rc.h + 1;
                    if (rc.x + eX > Frame.x + Frame.w + 1) eX = Frame.x + Frame.w - rc.x + 1;
                    if (rc.y + eY > Frame.y + Frame.h + 1) eY = Frame.y + Frame.h - rc.y + 1;
                }
                else
                {
                    bX = 0;
                    eX = rc.w;
                    bY = 0;
                    eY = rc.h;
                    if (rc.x + eX > Frame.x + Frame.w) eX = Frame.x + Frame.w - rc.x;
                    if (rc.y + eY > Frame.y + Frame.h) eY = Frame.y + Frame.h - rc.y;
                }

                for (int j = bY; j < eY; j++)
                {
                    for (int i = bX; i < eX; i++)
                    {
                        Color clr = GetPixel( bmp, rc.x + i, rc.y + j );
                        curByte += AddColor( ref Bytes, curByte, clr, ClrFormat );
                    }
                }
            }
        }