UIBezierPath颜色

时间:2014-12-06 22:30:33

标签: uibezierpath uitouch

我按照this教程创建了一个绘图应用程序。这一切都非常适合制作流畅的曲线。问题是,当我绘制线条是黑色时,一旦我放开它就会使线条成为我想要的颜色。本教程没有采用直线颜色,但我对其进行了修改。唯一的问题是它会在touchesEnded运行之前变黑。

这是我的代码:

第一部分将颜色设置为黑色。

- (id)initWithCoder:(NSCoder *)aDecoder
{
    if (self = [super initWithCoder:aDecoder])
    {
        [self setMultipleTouchEnabled:YES];
        path = [UIBezierPath bezierPath];
        [path setLineWidth:10.0];

        red = 0.0/255.0;
        green = 0.0/255.0;
        blue = 0.0/255.0;
        brush = 10.0;
        opacity = 0.8;

        toolSelected = 1;
        bgImage = 1;

    }
    return self;

}

然后在touchesEnded上运行此代码:

- (void)drawBitmap
{
    UIGraphicsBeginImageContextWithOptions(self.bounds.size, NO, 0.0);

    if (!incrementalImage) // first time; paint background white
    {
        UIBezierPath *rectpath = [UIBezierPath bezierPathWithRect:self.bounds];
        [[UIColor clearColor] setFill];
        [rectpath fill];
    }
    [incrementalImage drawAtPoint:CGPointZero];

    UIColor *colour = [UIColor colorWithRed:red green:green blue:blue alpha:opacity];

    [colour setStroke];
    [path stroke];
    incrementalImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
}

我认为需要在touchesMoved中运行某些东西以使bezier路径变得更加鲜明,但我现在才真正在努力解决这个问题。

有人可以帮忙吗?
感谢

1 个答案:

答案 0 :(得分:0)

最后通过在本节中添加这两行来实现

- (void)drawRect:(CGRect)rect
{
    [[UIColor redColor]setStroke];  // Added these
    [[UIColor redColor]setFill];    // two lines
    [incrementalImage drawInRect:rect];
    [path stroke];
}