开发者

how to draw airbrush on UIImageView?

I am a beginner working on paint application on iphone.

adding new tool for my iphone App called airbrush...

which will spray on UI开发者_StackOverflow社区ImageView. can any one help me out how to work with it.


Logic for air brush.........

- (UIBezierPath *)pathFromPoint:(CGPoint)start toPoint:(CGPoint)end {

    CGFloat lineWidth=10;
    redrawRect = CGRectMake(end.x-lineWidth,end.y-lineWidth,lineWidth*2,lineWidth*2);
    UIBezierPath *bezierPath = [UIBezierPath bezierPath];
    UIBezierPath *circle = [UIBezierPath bezierPathWithOvalInRect:redrawRect];
    NSInteger i, x, y;

    NSInteger modNumber =4*(int)lineWidth;
    for (i = 0; i < (lineWidth*lineWidth)/2; i++) {
        do {
            x = (random() % modNumber)+end.x - 2*lineWidth;
            y = (random() % modNumber)+end.y - 2*lineWidth;
        } while (![circle containsPoint:CGPointMake(x,y)]);

        [bezierPath appendPath:[UIBezierPath bezierPathWithRect:CGRectMake(x,y,0.5,0.5)]];
    }
    return bezierPath;
}

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
    UITouch *touch = [touches anyObject];   
    currentPoint = [touch locationInView:self.view];
    currentPoint.y -=20;
    [self drawCircle];
}
-(void)drawCircle{
    UIGraphicsBeginImageContext(self.drawImage.frame.size);
    [drawImage.image drawInRect:CGRectMake(0,0, drawImage.frame.size.width, drawImage.frame.size.height)]; //originally self.frame.size.width, self.frame.size.height)];
    CGContextSetLineWidth(UIGraphicsGetCurrentContext(),10);
    CGContextSetRGBStrokeColor(UIGraphicsGetCurrentContext(), 0.0, 0.0, 0.0, 1.0);
    UIBezierPath *path=[self pathFromPoint:currentPoint 
                                   toPoint:currentPoint];
    [path stroke];
    lastPoint = currentPoint;
    CGContextStrokePath(UIGraphicsGetCurrentContext());
    CGContextFlush(UIGraphicsGetCurrentContext());
    drawImage.image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
}


I think you might be looking for CGContextBeginPath and its related functions. I am not quite sure how to define a new stroke but I imagine it can be handled with something like [UIColor colorFromImage:myImage]. You should look into Quartz 2D, try looking here.

/Thomas

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜