рисование линии с использованием NSpoint пикселей с массивом - PullRequest
0 голосов
/ 08 февраля 2012

Я храню свой NSPoint в массиве, как это. Я хочу дать этот массив ввода в другой класс для рисования той же операции. как нарисовать это конкретное значение массива.

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

    CGPathAddLineToPoint(self.currentLine.linePath, NULL, currentPoint.x, currentPoint.y);
    [self setNeedsDisplay];

    [_array addObject:[NSValue valueWithCGPoint: currentPoint]];

}

вот мое значение массива консольный вывод

"NSPoint: {745, 575}",
"NSPoint: {730, 584}",
"NSPoint: {717, 588}",
"NSPoint: {701, 590}",
"NSPoint: {678, 590}",
"NSPoint: {642, 590}",
"NSPoint: {590, 590}",
"NSPoint: {520, 590}",
"NSPoint: {465, 589}",
"NSPoint: {438, 587}",
"NSPoint: {415, 587}",
"NSPoint: {403, 582}"


       - (void)drawRect:(CGRect)rect
        {
//    CGContextSetAlpha(context, self.currentLine.opacity);    
//        CGContextSetStrokeColorWithColor(context, self.currentLine.lineColor.CGColor);
//        CGContextSetLineWidth(context, self.currentLine.lineWidth);
//        CGContextSetLineCap(context, kCGLineCapRound);
//        CGContextSetLineJoin(context, kCGLineJoinRound);
 //       CGContextBeginPath(context);
//        CGContextAddPath(context, self.currentLine.linePath);
 //       CGContextStrokePath(context);
???????????
        }

этот код будет использоваться для сенсорного ввода линий. Как нарисовать линию без взаимодействия с пользователем когда представление появится. Этот подкласс uiview. я могу рисовать с помощью mouse.my нужно, у меня есть значение CGPoint Array Я хочу передать этот массив в этот класс ввода для рисования линии. Как я могу передать это

Ответы [ 3 ]

1 голос
/ 08 февраля 2012

Вам необходимо извлечь значения точек из массива и создать из них путь, а затем обвести его.

- (void)drawRect:(CGRect)rect {
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    // Set up your conext here, line colour, thickness, endcaps etc
    CGContextSetStrokeColorWithColor(ctx, [UIColor redColor].CGColor);
    CGContextSetLineWidth(ctx, 2.0);
    CGContextSetFillColorWithColor(ctx, [UIColor redColor].CGColor);

    //Create a path
    CGMutablePathRef pathRef = CGPathCreateMutable();

    // assume your array is called pointsArray and is a property
    // Move to the starting point
    CGPoint pt = [[self.pointsArray objectAtIndex:0] CGPointValue];
    CGPathMoveToPoint(pathRef, NULL, pt.x, pt.y);

    // Add the other points to the path
    CFIndex arrayCount = [self.pointsArray count];

    for (CFIndex i = 1; i < arrayCount; i++) {
        pt = [[self.pointsArray objectAtIndex:i] CGPointValue];
        CGPathAddLineToPoint(pathRef, NULL, pt.x, pt.y);
    }

    // Now you have a path, stroke it
    CGContextAddPath(ctx, pathRef);
    CGContextStrokePath(ctx);

    // Release your pathRef
    CGPathRelease(pathRef);
}

Вы можете скачать небольшой Пример проекта Xcode , который показывает эту работу.

0 голосов
/ 08 февраля 2012
  CGContextMoveToPoint(context, 0.0, 0.0);
  for (NSValue* value in array)
    {
      CGPoint p =[value CGPointValue];
      CGContextAddLineToPoint(context,p.x,p.y);

    }

вставьте его - (void) drawInContext: (CGContextRef) метод контекста

Попробуйте Это может быть полезно для вас ...

0 голосов
/ 08 февраля 2012

Сделайте это в вашем текущем классе, где вы хотите передать массив

хиджры

{
    NSArray *mArray;
}
@property (nonatomic, retain) NSArray *mArray;

А.м

@synthesize mArray;

затем напишите это, где вы создали A объект

A *a = [[A alloc] init]];
//this code to set the array in your A class
a.mArray = yourArrayOfPoints;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...