FROM : Hidetomo Katsura
DATE : Thu Aug 10 19:46:23 2006
Craig,
this seems to work. you need to use an alpha plane and hasAlpha:YES
if you want a transparent center.
- (NSImage *)black16x16SquareImage
{
static unsigned char pattern[] =
{
0xff, 0xff,
0xff, 0xff,
0xc0, 0x03,
0xc0, 0x03,
0xc0, 0x03,
0xc0, 0x03,
0xc0, 0x03,
0xc0, 0x03,
0xc0, 0x03,
0xc0, 0x03,
0xc0, 0x03,
0xc0, 0x03,
0xc0, 0x03,
0xc0, 0x03,
0xff, 0xff,
0xff, 0xff
};
NSBitmapImageRep *glyph;
NSImage *image;
unsigned char *planes[ 2 ];
planes[ 0 ] = pattern; // black
planes[ 1 ] = pattern; // alpha
glyph = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes:&planes[ 0 ]
pixelsWide:16
pixelsHigh:16
bitsPerSample:1
samplesPerPixel:2
hasAlpha:YES
isPlanar:YES
colorSpaceName:NSDeviceBlackColorSpace
bytesPerRow:2
bitsPerPixel:0];
image = [[NSImage alloc] initWithSize:NSMakeSize( 16, 16 )];
[image addRepresentation:glyph];
return [image autorelease];
}
regards,
katsura
On Aug 10, 2006, at 9:01 AM, Craig Dooley wrote:
> I am attempting to take a bitmap, and generate a black/transparent
> NSImage from it. The following example is attempting to draw a 16x16
> square in black, that is transparent in the center. It does create a
> 16x16 NSImage, which i can display, but only the top line and one
> pixel on the second row are black, and the rest is white. Is there
> any way to do this, or do i need to translate the data to another
> format first?
>
> unsigned char pattern[] = {
> 0xff, 0xff,
> 0xff, 0xff,
> 0xc0, 0x03,
> 0xc0, 0x03,
> 0xc0, 0x03,
> 0xc0, 0x03,
> 0xc0, 0x03,
> 0xc0, 0x03,
> 0xc0, 0x03,
> 0xc0, 0x03,
> 0xc0, 0x03,
> 0xc0, 0x03,
> 0xc0, 0x03,
> 0xc0, 0x03,
> 0xff, 0xff,
> 0xff, 0xff
> };
>
> unsigned char *planes[] = ;
> glyph = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes:planes
> pixelsWide:16
> pixelsHigh:16
> bitsPerSample:1
> samplesPerPixel:1
> hasAlpha:NO
> isPlanar:NO
> colorSpaceName:NSDeviceBlackColorSpace
> bytesPerRow:0
> bitsPerPixel:0];
> image = [[NSImage alloc] init];
> [image addRepresentation:glyph];
>
> -Craig
DATE : Thu Aug 10 19:46:23 2006
Craig,
this seems to work. you need to use an alpha plane and hasAlpha:YES
if you want a transparent center.
- (NSImage *)black16x16SquareImage
{
static unsigned char pattern[] =
{
0xff, 0xff,
0xff, 0xff,
0xc0, 0x03,
0xc0, 0x03,
0xc0, 0x03,
0xc0, 0x03,
0xc0, 0x03,
0xc0, 0x03,
0xc0, 0x03,
0xc0, 0x03,
0xc0, 0x03,
0xc0, 0x03,
0xc0, 0x03,
0xc0, 0x03,
0xff, 0xff,
0xff, 0xff
};
NSBitmapImageRep *glyph;
NSImage *image;
unsigned char *planes[ 2 ];
planes[ 0 ] = pattern; // black
planes[ 1 ] = pattern; // alpha
glyph = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes:&planes[ 0 ]
pixelsWide:16
pixelsHigh:16
bitsPerSample:1
samplesPerPixel:2
hasAlpha:YES
isPlanar:YES
colorSpaceName:NSDeviceBlackColorSpace
bytesPerRow:2
bitsPerPixel:0];
image = [[NSImage alloc] initWithSize:NSMakeSize( 16, 16 )];
[image addRepresentation:glyph];
return [image autorelease];
}
regards,
katsura
On Aug 10, 2006, at 9:01 AM, Craig Dooley wrote:
> I am attempting to take a bitmap, and generate a black/transparent
> NSImage from it. The following example is attempting to draw a 16x16
> square in black, that is transparent in the center. It does create a
> 16x16 NSImage, which i can display, but only the top line and one
> pixel on the second row are black, and the rest is white. Is there
> any way to do this, or do i need to translate the data to another
> format first?
>
> unsigned char pattern[] = {
> 0xff, 0xff,
> 0xff, 0xff,
> 0xc0, 0x03,
> 0xc0, 0x03,
> 0xc0, 0x03,
> 0xc0, 0x03,
> 0xc0, 0x03,
> 0xc0, 0x03,
> 0xc0, 0x03,
> 0xc0, 0x03,
> 0xc0, 0x03,
> 0xc0, 0x03,
> 0xc0, 0x03,
> 0xc0, 0x03,
> 0xff, 0xff,
> 0xff, 0xff
> };
>
> unsigned char *planes[] = ;
> glyph = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes:planes
> pixelsWide:16
> pixelsHigh:16
> bitsPerSample:1
> samplesPerPixel:1
> hasAlpha:NO
> isPlanar:NO
> colorSpaceName:NSDeviceBlackColorSpace
> bytesPerRow:0
> bitsPerPixel:0];
> image = [[NSImage alloc] init];
> [image addRepresentation:glyph];
>
> -Craig
| Related mails | Author | Date |
|---|---|---|
| Craig Dooley | Aug 10, 18:01 | |
| Daniel Jalkut | Aug 10, 19:42 | |
| Hidetomo Katsura | Aug 10, 19:46 | |
| Craig Dooley | Aug 10, 21:45 | |
| Hidetomo Katsura | Aug 10, 22:01 |






Cocoa mail archive

