矩形的着色

时间:2010-10-07 05:47:00

标签: iphone core-graphics

我是Graphics的新手。我正在绘制一个矩形,它会在一秒钟后改变颜色。

- (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颜色没有显示出来。我在这做错了什么?.....

...谢谢

2 个答案:

答案 0 :(得分:2)

RGB库方法期望浮点数介于0.0和1.0之间。如果你想在内部将颜色存储为这样的整数,在将它们传递给那些方法之前将它们除以255.0。

答案 1 :(得分:1)

颜色分量必须在0到1之间变化 - 尝试通过除以255.0f来标准化它们;