我想在IOS中绘制一个像可拖动角落的形状的矩形

时间:2012-07-04 09:48:08

标签: iphone objective-c ios xcode ipad

我想在照片上叠加一个盒子形状,并允许用户选择每个角落,然后将角落拖动到他们想要的位置。

我可以使用4个隐形按钮(代表每个角落)来响应拖动事件以获得每个角落的x,y点,但是在xcode中是否有一些线条绘制功能可以不触及任何游戏api类?我想我想在UIView上画线。

非常感谢, -code

1 个答案:

答案 0 :(得分:1)

创建UIView的子类来表示您的视图。在视图中添加UIImageView。这将使用用户的绘图保存图像。

UIView子类中启用用户互动。

self.userInteractionEnabled = YES;

通过在子类中实现此方法来检测起始点击:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    // We are starting to draw
    // Get the current touch.
    UITouch *touch = [touches anyObject];    
    startingPoint = [touch locationInView:self];
}

检测最后一次点击以绘制直线:

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
    UITouch *touch = [touches anyObject];    
    endingPoint = [touch locationInView:self];

    // Now draw the line and save to your image
    UIGraphicsBeginImageContext(self.frame.size);

    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetLineWidth(context, 10);
    CGContextMoveToPoint(context, NULL, startingPoint.x, startingPoint.y);
    CGContextAddLineToPoint(context, NULL, endingPoint.x, endingPoint.y);
    CGContextSetRGBFillColor(context, 255, 255, 255, 1);
    CGContextSetRGBStrokeColor(context, 255, 255, 255, 1);
    CGContextStrokePath(context);
    self.image = UIGraphicsGetImageFromCurrentImageContext();
    CGContextRelease(context);
}