2010-10-07 63 views
0

我是一個Graphics.I'm新手畫一個矩形,它將在一秒鐘後改變其顏色。矩形的着色

- (void)drawRect:(CGRect)rect { 
    [self setWidthHeightOfRectangle]; 
    [self changeColorOfNumbers]; 
    CGContextRef ctx = UIGraphicsGetCurrentContext(); 
    CGContextClearRect(ctx, rect); 

    // Draw a solid square 

    CGContextSetRGBFillColor(ctx, 255, 255, 255, 1); 
    CGContextFillRect(ctx, CGRectMake(0.0, 24.0, 380.0, 2.0)); 
    CGContextSetRGBFillColor(ctx, redNumber, greenNumber, blueNumber, 1); 
    CGContextFillRect(ctx, frameToDraw); 
} 

我改變矩形的使用changeColorOfNumbers方法的顏色。這裏是方法

- (void)changeColorOfNumbers { 
iHit++; 
if (iHit==100) { 
    redNumber=249; 
    greenNumber=252; 
    blueNumber=0; 

} else if (iHit==200) { 
    redNumber=0; 
    greenNumber=168; 
    blueNumber=245; 

} else if (iHit==300) { 
    redNumber=255; 
    greenNumber=0; 
    blueNumber=140; 

} else if (iHit==400) { 
    redNumber=255; 
    greenNumber=125; 
    blueNumber=0; 

} else if (iHit==500) { 
    redNumber=0; 
    greenNumber=176; 
    blueNumber=72; 

} else if (iHit==600) { 
    redNumber=128; 
    greenNumber=0; 
    blueNumber=148; 

} else if (iHit==700) { 
    redNumber=8; 
    greenNumber=79; 
    blueNumber=168; 

} else if (iHit==800) { 
    redNumber=127; 
    greenNumber=212; 
    blueNumber=20; 

} else if (iHit==900) { 
    redNumber=255; 
    greenNumber=0; 
    blueNumber=0; 

} else if (iHit==1) { 
    redNumber=0; 
    greenNumber=0; 
    blueNumber=0; 
    frameToDraw=CGRectMake(0.0, 0.0, 0.0, 50.0); 
} else if (iHit==2) { 
    redNumber=255; 
    greenNumber=255; 
    blueNumber=255; 
} 
} 

問題是,一些我申請RGB三原色中沒有顯示出來。我在做什麼錯在這裏.....

謝謝...

回答

1

顏色組件必須從0變化到1 - 試圖通過將上255.0f正常化呢?;

+0

謝謝弗拉基米爾....它的工作原理... – 2010-10-07 07:11:25

2

的RGB庫方法期望在0.0和1.0之間浮動。如果你想把你的顏色內部保存爲這樣的整數,在將它們傳遞給這些方法之前,將它們除以255.0。