0

放射状グラデーションを使用して円を描いています。正常に動作していますが、その円に黒と白の色を塗りつぶそうとすると、正しく機能しません。アプリを黒と白の色で実行すると、黒の色が緑色になります白色の場合は黄色です。ここに私のコードがあります: `

CGContextRef contextRef = UIGraphicsGetCurrentContext();
CGContextSetRGBStrokeColor(contextRef, 0, 0, 1.0, 1.0);
CGContextSetLineWidth(contextRef, borderWidth);
CGContextSetFillColorWithColor(contextRef, borderColor.CGColor);
//draw border
CGContextFillEllipseInRect(contextRef, CGRectMake(self.bounds.size.width/2 - (radius), self.bounds.size.height/2 - (radius), 2*radius, 2*radius));
//components from gradientColor1 and gradientColor2
CGFloat red1;
CGFloat green1;
CGFloat blue1;
{
    const CGFloat *components = CGColorGetComponents(gradientColor1.CGColor);
    red1 = components[0];
    green1 = components[1];
    blue1 = components[2];
}
CGFloat red2;
CGFloat green2;
CGFloat blue2;
{
    const CGFloat *components = CGColorGetComponents(gradientColor2.CGColor);
    red2 = components[0];
    green2 = components[1];
    blue2 = components[2];
}
//radial gradient color
CGGradientRef gradient;
CGColorSpaceRef colorSpace;
CGFloat locations[] = {0.0,1.0};
CGFloat components[] = { red2,green2,blue2,1.0,red1,green1,blue1,1.0  };
colorSpace = CGColorSpaceCreateDeviceRGB();
gradient = CGGradientCreateWithColorComponents(colorSpace,components,locations,
                                               sizeof(locations)/sizeof(CGFloat));
CGPoint start = CGPointMake(self.bounds.size.width/2, self.bounds.size.height/2 ), end = CGPointMake(self.bounds.size.width/2 , self.bounds.size.height/2);
CGFloat startRadius = 0.0, endRadius = radius - borderWidth;
CGContextDrawRadialGradient(contextRef,gradient,start,startRadius,end,endRadius,0);
CGGradientRelease(gradient);
CGColorSpaceRelease(colorSpace);

ここで、gradientColor1 は白色で、gradientColor2 は黒色です。助けてください。ありがとうございます。画像を参照してください。

ここに画像の説明を入力

4

1 に答える 1

1

使ってみて

NSArray *colors = [NSArray arrayWithObjects:
                                              (id)[UIColor colorWithWhite: 1.0 alpha: 1.0].CGColor,
                                              (id)[UIColor colorWithWhite: 0.0 alpha: 1.0].CGColor, nil];
CGGradientRef gradient = CGGradientCreateWithColors(colorSpace, (__bridge CFArrayRef) colors, locations);
于 2013-09-02T06:34:20.070 に答える