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。

相關問題