如何在UIView中绘制具有不同颜色的多个UIBezierPath [英] How to draw multiple UIBezierPath with different colors in a UIView

查看:857
本文介绍了如何在UIView中绘制具有不同颜色的多个UIBezierPath的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在具有不同笔触和填充颜色的UIView中绘制多个UIBezierPath。

I would like to draw multiple UIBezierPath in a UIView with different stroke and fill color.

这是代码

- (void)drawRect:(CGRect)rect {

    context = UIGraphicsGetCurrentContext();

    [[UIColor grayColor] setFill]; 
    [[UIColor greenColor] setStroke];

    UIBezierPath *aPath = [[UIBezierPath alloc] init]; 
    [aPath moveToPoint:CGPointMake(227,34.25)];
    [aPath addLineToPoint:CGPointMake(298.25,34.75)];
    [aPath addLineToPoint:CGPointMake(298.5,82.5)];
    [aPath addLineToPoint:CGPointMake(251,83)];
    [aPath addLineToPoint:CGPointMake(251,67.5)];
    [aPath addLineToPoint:CGPointMake(227.25,66.75)];   
    [aPath closePath]; 
    aPath.lineWidth = 2;
    [aPath fill]; 
    [aPath stroke];

    UIBezierPath *aPath2 = [[UIBezierPath alloc] init];
    [aPath2 moveToPoint:CGPointMake(251.25,90.5)];
    [aPath2 addLineToPoint:CGPointMake(250.75,83.25)];
    [aPath2 addLineToPoint:CGPointMake(298.5,83)];
    [aPath2 addLineToPoint:CGPointMake(298.5,90.25)];
    [aPath2 closePath];
    aPath2.lineWidth = 2;
    [aPath2 fill]; 
    [aPath2 stroke];
    [paths addObject:aPath2];

问题是笔划和填充颜色是在当前上下文中设置的。
是否可以在同一个CGContextRef中绘制不同颜色的不同UIBezierPath?

The problem is that the stroke and the fill color are set on the current context. Is it possible to draw different UIBezierPath with different colors in the same CGContextRef?

或者我必须在单独的UIView中绘制每个UIBezierPath?

Or I have to draw each UIBezierPath in separate UIView?

推荐答案

你应该添加

[desiredStrokeColor setStroke];
[desiredFillColor setFill];

表示这些是在此上下文中必须进一步使用的新颜色。你应该在每次调用

indicating that these are the new colors that have to used further on in this context. You should do this before every time you call a

[aNewPath fill];
[aNewPath stroke];

以便用这些颜色绘制路径。

so that the paths be drawn with those colors.

无需为每个贝塞尔曲线路径使用新视图。

这篇关于如何在UIView中绘制具有不同颜色的多个UIBezierPath的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆