We are needing a c# .net GDI library created that will help us tile large images for our printing department. I've attached some sample images below along with samples of how the composite images should look like.
We have a class that looks like the following:
Class TiledImage
----------------
int TiledBitmapID (Will contain the id of the image)
Bitmap TiledBitmap (Will contain the image to add to the composite image)
int Quantity (The quantity of this image to add)
RotationTypeEnum RotationAllowed (Determines how the image can be rotated to fit in the composite)
Enum RotationTypeEnum
---------------------
None (Meaning it can't be rotated)
Ninety (Meaning it can be rotated in 90 degree increments: 90, 180, 270)
One80 (Meaning it can be rotated in 180 degree increments: 180)
We want a method with the following signature that will let us pass in the maximum size that our composite images can be along with a list of TiledImage instances that will be used for creating the composite images. This method should return an instance of the following class that contains 2 structures. One will be a list of composite images that will define the size of each and the other will be a list of individual tiled image positions.
Method Signature:
List tileList = new List();
... Add tiles to list ...
TiledImageOutput output = [login to view URL](new Size(5950,14950), tileList);
Class TiledImageOutput
----------------------
List Composites
LIst Tiles
struct CompositeImage
---------------------
int CompositeID (Zero based increment: 0,1)
Size CompositeSize (5,693 x 10,628, 5,819 x 4,829)
struct TileImage
----------------
int TiledBitmapID (References the TiledBitmapID from the TiledImage class that was passed in)
int CompositeID (References the CompositeID from the CompositeImage that it belongs to)
Pos CompositePos (The x,y location to draw the tiled image on the composite image.
For example, with the sample images that I've attached, I would have submitted the following:
Maximum Composite Image Size: 5,950 x 14,950
List of the following:
0, [login to view URL], Qty: 3, Can Rotate 180
1, [login to view URL], Qty: 3, Can Rotate 180
2, [login to view URL], Qty: 3, Can Rotate 180
3, [login to view URL], Qty: 3, Can Rotate 180
4, [login to view URL], Qty: 1, Can Rotate 180
5, [login to view URL], Qty: 1, Can Rotate 180
6, [login to view URL], Qty: 1, Can Rotate 180
And the library would have returned a list of the TiledImageOutput similar to:
Composites
- 0, (5693 x 10628)
- 1, (5819 x 4829)
Tiles (x,y) being the position to draw them at.
- 0, 0, (x,y)
- 0, 0, (x,y)
- 0, 0, (x,y)
- 1, 0, (x,y)
- 1, 0, (x,y)
- 1, 0, (x,y)
- 4, 0, (x,y)
- 5, 0, (x,y)
- 6, 0, (x,y)
- 2, 1, (x,y)
- 2, 1, (x,y)
- 2, 1, (x,y)
- 3, 1, (x,y)
- 3, 1, (x,y)
- 3, 1, (x,y)