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); } } } }
public Sprite() { Frame = new Frame(); Partition = new RectPartition(); Difference = false; }
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 ); } } } }