在NSBitmapImageRep上绘制时更改颜色



我实现了一个返回NSBitmapImageRep的方法。应该在位图上绘制10x2个矩形,每个矩形都应该填充青色。但对于每个矩形,青色值应增加12(值从0开始)。

结果位图得到20个矩形,与预期的一样。但是矩形之间的颜色没有区别。所有矩形都具有相同的青色值。

我不知道出了什么问题。有人能给我一个提示吗?

-(NSBitmapImageRep*)drawOntoBitmap
{
   NSRect offscreenRect = NSMakeRect(0.0, 0.0, 1000.0, 400.0);
   NSBitmapImageRep *image = nil;
    image = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes:nil
                                                   pixelsWide:offscreenRect.size.width
                                                   pixelsHigh:offscreenRect.size.height
                                                bitsPerSample:8
                                              samplesPerPixel:4
                                                     hasAlpha:NO
                                                     isPlanar:NO
                                               colorSpaceName:NSDeviceCMYKColorSpace
                                                 bitmapFormat:0
                                                  bytesPerRow:(4 * offscreenRect.size.width)
                                                 bitsPerPixel:32];
   [NSGraphicsContext saveGraphicsState];
   [NSGraphicsContext setCurrentContext:[NSGraphicsContext graphicsContextWithBitmapImageRep:image]];
   NSRect colorRect;
   NSBezierPath *thePath;
   int cyan = 0;
   int x = 0;
   int y = 0;
   int w = 0;
   int h = 0;
   for (intj = 0; j<2; j++)
   {
       y = j * 200;
       h = y + 200;
       for (int i = 0; i<10; i++)
       {
           x = i * 100;
           w = x + 100;
           colorRect = NSMakeRect(x, y, w, h);
           thePath = [NSBezierPath bezierPathWithRect: colorRect];
           cyan += 12;
           [[NSColor colorWithDeviceCyan:cyan magenta:0 yellow:0 black:0 alpha:100] set];
           [thePath fill];
       }
   }
   [NSGraphicsContext restoreGraphicsState];
   return image;
}

对于每个矩形,都使用相同的颜色值,这是传递两个循环后设置的最后一个青色值。

OK,发现NSColor值的范围为0.0-1.0。所以我必须将我的青色设置为这样浮动:

cyan += 12/255;

该值必须小于1.0。

相关内容

  • 没有找到相关文章

最新更新