3

描画効果をベースにした新しいアプリを開発しようとしています。単純な効果は知っていますが、ブラシ効果(鉛筆効果)のあるアプリを見たことがあります。

このように考えるにはどうすればよいですか?(SignNow アプリ)

ありがとう

以下にいくつかの例を示します。(最初に私のコードを使用し、次に同じ効果が必要です)

最初 :

署名を描く myapp

2番目 :

私も同じものが欲しいサインナウアプリ

私のコード:

- (void)drawRect:(CGRect)rect {

CGContextRef context = UIGraphicsGetCurrentContext();

// Set drawing params
CGContextSetLineWidth(context, self.lineWidth);
CGContextSetStrokeColorWithColor(context, [self.foreColor CGColor]);
CGContextSetLineCap(context, kCGLineCapButt);
CGContextSetLineJoin(context, kCGLineJoinRound);
CGContextBeginPath(context);




// This flag tells us to move to the point
// rather than draw a line to the point
BOOL isFirstPoint = YES;

// Loop through the strings in the array
// which are just serialized CGPoints
for (NSString *touchString in self.handwritingCoords) {

    // Unserialize
    CGPoint tapLocation = CGPointFromString(touchString);

    // If we have a CGPointZero, that means the next
    // iteration of this loop will represent the first
    // point after a user has lifted their finger.
    if (CGPointEqualToPoint(tapLocation, CGPointZero)) {
        isFirstPoint = YES;
        continue;
    }


    // If first point, move to it and continue. Otherwize, draw a line from
    // the last point to this one.
    if (isFirstPoint) {
        CGContextMoveToPoint(context, tapLocation.x, tapLocation.y);




            //CGContextAddArc(ctx, tapLocation.x, tapLocation.y, 30.00, (startDeg-90)*M_PI/180.0, (endDeg-90)*M_PI/180.0, 0);
        isFirstPoint = NO;
    } else {
        CGPoint startPoint = CGContextGetPathCurrentPoint(context);
        CGContextAddQuadCurveToPoint(context, startPoint.x, startPoint.y, tapLocation.x, tapLocation.y);
        CGContextAddLineToPoint(context, tapLocation.x, tapLocation.y);
    }

}   

// Stroke it, baby!
CGContextStrokePath(context);

}

4

1 に答える 1

1

アクティブなスムーズ ドローイングプロジェクトからインスピレーションを得ることをお勧めします。これは、ベスト プラクティスを開始して学習するのに最適な場所です。さらに、cocos2d で滑らかな線を描く素晴らしい記事で、このプロジェクトの背後にある考え方について詳しく知ることができます。

于 2013-08-26T21:44:15.537 に答える