0

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

结果位图得到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; 
} 

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

回答

0

好的,发现NSColor值的范围是0.0 - 1.0。 所以,我必须把我的青色漂浮这样的:

cyan += 12/255; 

的值必须小于1.0。

相关问题