2009-07-13 155 views
1

我能夠在給定的CGPoint中讀取特定的像素,但我一直在尋找更改像素的顏色,如果有人能幫我解決一個代碼片段,我將非常感謝。更改像素的顏色

我的代碼是:

unsigned char* data = CGBitmapContextGetData (cgctx);  

if (data != NULL) {  
    offset = 4*((w*round(point.y))+round(point.x));  
    alpha = data[offset];  
    red = data[offset+1];    
    green = data[offset+2];   
    blue = data[offset+3];  
    color = [UIColor colorWithRed:(red/255.0f) 
        green:(green/255.0f) blue:(blue/255.0f) 
        alpha:(alpha/255.0f)];  
} 

回答

1

目前還不清楚是什麼你正在嘗試做的。如果你想改變像素的顏色在原來的CGImageRef,那麼你會使用類似:


// Set the color of the pixel to 50% grey + 50% alpha 
data[offset+0] = 128; 
data[offset+1] = 128; 
data[offset+2] = 128; 
data[offset+3] = 128; 

// Create a CGBitmapImageContext 
CGContextRef bitmapContext = CGBitmapContextCreate(data, width, height, CGImageGetBitsPerComponent(), width * 4, CGImageGetColorSpace(), kCGImageAlphPremultipliedFirst); 

// Draw the bitmap context back to your original context 
CGContextDrawImage(bitmapContext, CGMakeRect(...), cgctx); 

你應該把所有的更改數據*一次,然後寫入修改後的位圖緩衝區回到原來的上下文。

+0

thanx mark, 其實我試圖實現洪水填充,但我不能做到這一點,當我嘗試匹配像素與它的像素值附近,它給了我虛假。 該場景是我有一個背景圖像,並有一些形狀,用戶可以從調色板中選擇顏色,並單擊我想嘗試洪水填充對象。 我非常需要幫助,因爲我無法填充顏色。 – xavoDev 2009-07-14 06:24:32