如何获取ios中的所有坐标点(X和Y)
How to get all the coordinate points (X and Y) in ios
我正在编写一个应用程序,允许用户在视图中绘制他们想要的任何东西。当他们绘图时,我使用 Json 将坐标值同时发送到网络,并在网络中绘制相同的图表。当我慢慢画的时候,我得到的所有坐标值都是这样的。
{"XY":["92,240","94,240","96,240","97,240","98,240","99,240","100,240","102,240","103,240","104,240","104,240","105,240","106,240","107,240","108,240","108,240","110,240","110,240","112,240","112,240","114,240","115,240","116,240","117,240","118,240","120,240","120,240","120,240","122,240","122,240","124,240","124,240","126,240"]}
但是当我快速绘图时,我得到了想要的绘图但缺少很多坐标值。
{"XY":["96,320","117,302","170,262","252,208"]}
下面是我用来实现这个的代码。
@implementation PJRSignatureView
{
UIBezierPath *beizerPath;
UIImage *incrImage;
CGPoint points[10];
uint control;
}
- (void)drawRect:(CGRect)rect
{
[incrImage drawInRect:rect];
[beizerPath stroke];
// Set initial color for drawing
UIColor *fillColor = INITIAL_COLOR;
[fillColor setFill];
UIColor *strokeColor = INITIAL_COLOR;
[strokeColor setStroke];
[beizerPath stroke];
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
if ([lblSignature superview]){
[lblSignature removeFromSuperview];
}
rectArray = [[NSMutableArray alloc] init];
control = 0;
UITouch *touch = [touches anyObject];
points[0] = [touch locationInView:self];
CGPoint startPoint = points[0];
CGPoint endPoint = CGPointMake(startPoint.x + 1.5, startPoint.y
+ 2);
[beizerPath moveToPoint:startPoint];
NSLog(@"myPoint = %@", [NSValue valueWithCGPoint:endPoint]);
NSLog(@"beizerPath :%@",beizerPath);
[beizerPath addLineToPoint:endPoint];
NSLog(@"beizerPath end:%@",beizerPath);
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [touches anyObject];
CGPoint touchPoint = [touch locationInView:self];
control++;
points[control] = touchPoint;
if (control == 4)
{
points[3] = CGPointMake((points[2].x + points[4].x)/2.0, (points[2].y + points[4].y)/2.0);
[beizerPath moveToPoint:points[0]];
[beizerPath addCurveToPoint:points[3] controlPoint1:points[1] controlPoint2:points[2]];
[self setNeedsDisplay];
points[0] = points[3];
points[1] = points[4];
control = 1;
}
NSLog(@"beizerPathmove:%@",beizerPath);
NSString *rect_xy = [NSString stringWithFormat:@"%.f,%.f",touchPoint.x,touchPoint.y];
[rectArray addObject:rect_xy];
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
[self drawBitmapImage];
[self setNeedsDisplay];
[beizerPath removeAllPoints];
NSMutableDictionary *rectDict = [[NSMutableDictionary alloc]init];
[rectDict setValue:rectArray forKey:@"XY"];
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:rectDict options:0 error:nil];
// Checking the format
NSLog(@"%@",[[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]);
control = 0;
}
如何在快速绘制时找到所有坐标值?
系统以一定的时间间隔发送触摸事件。如果你走得慢,你会得到更多,但如果你走得快,你得到的就会少。如果你行动迅速,你将无法获得更多。但你也可能不需要更多。你只需要画点之间的线,无论它们之间的距离是小还是大。
Apple 产品以特定的时间间隔发送触摸事件。所以,如果你 draw/write 任何东西慢慢地它可能得到所有的坐标值,如果你 draw/write 快你会少一些。并在您使用过的网络中应用相同类型的功能。希望现在能解决这个问题。
我正在编写一个应用程序,允许用户在视图中绘制他们想要的任何东西。当他们绘图时,我使用 Json 将坐标值同时发送到网络,并在网络中绘制相同的图表。当我慢慢画的时候,我得到的所有坐标值都是这样的。
{"XY":["92,240","94,240","96,240","97,240","98,240","99,240","100,240","102,240","103,240","104,240","104,240","105,240","106,240","107,240","108,240","108,240","110,240","110,240","112,240","112,240","114,240","115,240","116,240","117,240","118,240","120,240","120,240","120,240","122,240","122,240","124,240","124,240","126,240"]}
但是当我快速绘图时,我得到了想要的绘图但缺少很多坐标值。
{"XY":["96,320","117,302","170,262","252,208"]}
下面是我用来实现这个的代码。
@implementation PJRSignatureView
{
UIBezierPath *beizerPath;
UIImage *incrImage;
CGPoint points[10];
uint control;
}
- (void)drawRect:(CGRect)rect
{
[incrImage drawInRect:rect];
[beizerPath stroke];
// Set initial color for drawing
UIColor *fillColor = INITIAL_COLOR;
[fillColor setFill];
UIColor *strokeColor = INITIAL_COLOR;
[strokeColor setStroke];
[beizerPath stroke];
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
if ([lblSignature superview]){
[lblSignature removeFromSuperview];
}
rectArray = [[NSMutableArray alloc] init];
control = 0;
UITouch *touch = [touches anyObject];
points[0] = [touch locationInView:self];
CGPoint startPoint = points[0];
CGPoint endPoint = CGPointMake(startPoint.x + 1.5, startPoint.y
+ 2);
[beizerPath moveToPoint:startPoint];
NSLog(@"myPoint = %@", [NSValue valueWithCGPoint:endPoint]);
NSLog(@"beizerPath :%@",beizerPath);
[beizerPath addLineToPoint:endPoint];
NSLog(@"beizerPath end:%@",beizerPath);
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [touches anyObject];
CGPoint touchPoint = [touch locationInView:self];
control++;
points[control] = touchPoint;
if (control == 4)
{
points[3] = CGPointMake((points[2].x + points[4].x)/2.0, (points[2].y + points[4].y)/2.0);
[beizerPath moveToPoint:points[0]];
[beizerPath addCurveToPoint:points[3] controlPoint1:points[1] controlPoint2:points[2]];
[self setNeedsDisplay];
points[0] = points[3];
points[1] = points[4];
control = 1;
}
NSLog(@"beizerPathmove:%@",beizerPath);
NSString *rect_xy = [NSString stringWithFormat:@"%.f,%.f",touchPoint.x,touchPoint.y];
[rectArray addObject:rect_xy];
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
[self drawBitmapImage];
[self setNeedsDisplay];
[beizerPath removeAllPoints];
NSMutableDictionary *rectDict = [[NSMutableDictionary alloc]init];
[rectDict setValue:rectArray forKey:@"XY"];
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:rectDict options:0 error:nil];
// Checking the format
NSLog(@"%@",[[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]);
control = 0;
}
如何在快速绘制时找到所有坐标值?
系统以一定的时间间隔发送触摸事件。如果你走得慢,你会得到更多,但如果你走得快,你得到的就会少。如果你行动迅速,你将无法获得更多。但你也可能不需要更多。你只需要画点之间的线,无论它们之间的距离是小还是大。
Apple 产品以特定的时间间隔发送触摸事件。所以,如果你 draw/write 任何东西慢慢地它可能得到所有的坐标值,如果你 draw/write 快你会少一些。并在您使用过的网络中应用相同类型的功能。希望现在能解决这个问题。