This function transfers pixels from the location pointed to by lpPixel into the rectangular portion of the image specified by rectangle lpRect.
Declaration:
Copy Code | |
---|---|
AT_ERRCOUNT ACCUAPI IG_DIB_area_set ( HIGEAR hIGear, const LPAT_RECT lpRect, const LPAT_PIXEL lpPixel, AT_MODE nPixelFormat ); |
Arguments:
Name | Type | Description |
hIGear | HIGEAR | ImageGear HIGEAR handle of image |
lpRect | const LPAT_RECT | Far pointer to an AT_RECT struct specifying the rectangular portion of the image bitmap to set |
lpPixel | LPAT_PIXEL | Far pointer to first byte of your pixel data |
nPixelFormat | AT_MODE | A constant such as IG_DIB_AREA_UNPACKED specifying in what form you are providing the pixels. The IG_DIB_AREA_... constants are listed in file accucnst.h. |
Return Value:
Returns the number of ImageGear errors that occurred during this function call. If there are no errors, the return value is IGE_SUCCESS.
Supported Raster Image Formats:
All pixel formats supported by ImageGear Professional.
Sample:
Pixel Access
Example:
Copy Code | |
---|---|
HIGEAR hIGear; /* HIGEAR handle of image */ AT_RECT rcBlock; /* The rectangular block to set */ AT_PIXEL cPixelArray[400]; /* The pixels to set */ AT_DIMENSION nWid, nHi; /* Receives the width & height of an image */ UINT nBpp; /* Bits per pixel */ AT_ERRCOUNT nErrcount; /* Receives the returned error counts */ /* Sets the upper left 20 x 20 pixels, to cPixArray[]: */ rcBlock.top = rcBlock.left = 0; rcBlock.bottom = rcBlock.right = 20; /* 20x20 area, 400 pixels */ nErrcount = IG_image_dimensions_get ( hIGear, &nWid, &nHi, &nBpp ); */ if ( nErrcount == 0 ) /* If valid image, dimensions obtained: */ { if ( (nBpp <= 8) && (nWid >= 20) && (nHi >= 20) ) { /*Array is too small for 24-bit) */ INT row, col; pix; /* For the loops below */ AT_PIXEL nPixval; /* pixel value to set */ if (nBpp == 8) nPixval = 128; /* Value to set if 8-bit */ if (nBpp == 4) nPixval = 8; /* Value to set if 4-bit */ if (nBpp == 1) nPixval = 1; /* Pixel ON if 1-bit */ for ( pix=0,row=0; row<20; row++ ) /* For all pixels in */ for ( col=0; col<20; col++ )/* the 20 x 20 array: */ cPixelArray[pix++] = nPixval; /* Set unpacked in byte */ nErrcount = IG_DIB_area_set ( hIGear, &rcBlock, &cPixelArray[0], IG_DIB_AREA_UNPACKED ); } } |
Remarks:
ImageGear's pixel access functions consider the coordinates (0,0) to refer to the upper left-hand corner of the bitmap data. They do not follow the DIB's orientation, which considers (0,0) to refer to the lower left-hand corner of the bitmap.
- Use nPixelFormat = IG_DIB_AREA_DIB if you are providing the pixels in standard uncompressed DIB format. This means 1-bit or 4-bit pixels will be packed 8 to the byte or 2 to the byte respectively, left justified (first pixel uses most significant bit). 24-bit pixels are in 3 bytes, ordered Blue-Green-Red.
- Use nPixelFormat = IG_DIB_AREA_UNPACKED if you are providing the pixels 1 pixel per byte (however, 3 bytes for a 24-bit pixel, ordered Blue-Green-Red). In this case, you provide 1-bit and 4-bit pixels one to a byte, right justified in the byte.
See also function IG_DIB_area_get().