2010-10-07 59 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。