2011-11-23 52 views
2

我用Core Graphics绘制了多边形。但我无法调整多边形的大小。我用UIBezierPath绘制多边形。这是我的代码如何在iPhone中绘制可调整大小的多边形?

CGPoint gestureStartPoint,currentPosition; 
- (id)initWithFrame:(CGRect)frame { 
    self = [super initWithFrame:frame]; 
    if (self) { 
     currentPath = [[UIBezierPath alloc]init]; 
     currentPath.lineWidth=1; 
     xx1 = 30; 
     yy1 = 30; 
     xx = 30; 
     yy = 30; 
     CGPoint gestureStartPoint,currentPosition; 
    } 
    return self; 
} 

- (void)drawRect:(CGRect)rect { 
    if(drawColor==nil){ 
     [[UIColor redColor]setStroke]; 
     [currentPath stroke]; 
    } 
    else { 
     [drawColor setStroke]; 
     [currentPath stroke]; 
    } 
} 

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
     UITouch *touch = [touches anyObject]; 
     gestureStartPoint = [touch locationInView:self]; 
     currentPosition.x = xx; 
     currentPosition.y = yy; 
     xx = gestureStartPoint.x; 
     yy = gestureStartPoint.y; 
     [currentPath moveToPoint:(currentPosition)]; 
     [currentPath addLineToPoint:(gestureStartPoint)]; 
     [self setNeedsDisplay]; 
} 

这是样本resizable Polygon的链接。如何用这种可调整大小的属性绘制多边形?我不知道从哪里开始制作可调整大小的多边形。

+0

我可以有你的电子邮件..必须问一些问题。? – mAc

+0

嘿! Thanx ...你会添加到Gmail中 – mAc

回答

1

这比简单地调用一些CoreGraphics魔术更复杂。

要简单地复制您链接到该网站上的逻辑,我想通过分解问题开始:

两种类型的手势识别:水龙头,挖掘 - 保持 - 拖拽。

点击应该添加一个x,y(点)到您正在存储和重绘的点列表。

点按住拖拽应该使用用户水龙头的x,y位置来确定最近的顶点 - 并且您应该也可以进行一些最大距离检查。一旦确定了用户正在“拖动”哪个顶点,您可以在列表中操纵该点并重绘。