-1

iOS用のxcodeで図形を描画する場合、最終的に描画される図形の色を変更するにはどうすればよいですか?

- (void) drawArrowWithContext:(CGContextRef)context atPoint:(CGPoint)startPoint withSize:   (CGSize)size lineWidth:(float)width arrowHeight:(float)aheight
{
float width_wing = (size.width-width)/2;
float main = size.height-aheight;
CGPoint rectangle_points[] =
{
    CGPointMake(startPoint.x + width_wing, startPoint.y + 0.0),
    CGPointMake(startPoint.x + width_wing, startPoint.y + main),
    CGPointMake(startPoint.x + 0.0, startPoint.y + main), // left point
    CGPointMake(startPoint.x + size.width/2, startPoint.y + size.height),

    CGPointMake(startPoint.x + size.width, startPoint.y + main), // right point

    CGPointMake(startPoint.x + size.width-width_wing, startPoint.y + main),

    CGPointMake(startPoint.x + size.width-width_wing, startPoint.y + 0.0),
    CGPointMake(startPoint.x + width_wing, startPoint.y + 0.0),
};

CGContextAddLines(context, rectangle_points, 8);

CGContextFillPath(context);
}

デフォルトでは、この矢印の色は黒ですが、ユーザーが黒、白、または赤に変更できるようにしたいと思います。これどうやってするの?

4

2 に答える 2

2

私はあなたが探しているのはCGContextSetRGBFillColorまたはCGContextSetRGBStrokeColor

- (void) drawArrowWithContext:(CGContextRef)context atPoint:(CGPoint)startPoint withSize: (CGSize)size lineWidth:(float)width arrowHeight:(float)aheight andColor:(UIColor *)color
{
float width_wing = (size.width-width)/2;
float main = size.height-aheight;

CGContextSetRGBFillColor(context,color.CGColor);
CGContextSetRGBStrokeColor(context,color.CGColor);

CGPoint rectangle_points[] =
{
    CGPointMake(startPoint.x + width_wing, startPoint.y + 0.0),
    CGPointMake(startPoint.x + width_wing, startPoint.y + main),
    CGPointMake(startPoint.x + 0.0, startPoint.y + main), // left point
    CGPointMake(startPoint.x + size.width/2, startPoint.y + size.height),

    CGPointMake(startPoint.x + size.width, startPoint.y + main), // right point

    CGPointMake(startPoint.x + size.width-width_wing, startPoint.y + main),

    CGPointMake(startPoint.x + size.width-width_wing, startPoint.y + 0.0),
    CGPointMake(startPoint.x + width_wing, startPoint.y + 0.0),
};

CGContextAddLines(context, rectangle_points, 8);

CGContextFillPath(context);
}
于 2013-01-22T16:47:11.793 に答える
0

新しい色で再描画する必要があります。矢印は、その場で変更できるプロパティを持つオブジェクトとしては存在しません。

CGContextSetRGBFillColorしたがって、@ selectorを変更して、またはを介して適用するカラーパラメータを受け入れますCGContextSetRGBStrokeColor。これは、CGColorまたは、switchステートメントで使用して事前定義された色から選択できる整数のいずれかです。

于 2013-01-22T16:51:57.297 に答える