1

描画アプリケーションで線を描画したい。
下の画像のように線を引きたいです。

ここに画像の説明を入力

ここでは、上下の線幅が中央の線よりも広いことがわかります。アプリによると、ユーザーがゆっくり描くときは線幅を増やす必要があり、ユーザーが速く描くときは線幅が減ります。

http://www.merowing.info/2012/04/drawing-smooth-lines-with-cocos2d-ios-inspired-by-paper/を試してみました

しかし、それは私の必要性の逆です。

この種のスムーズな描画について何か考えがありませんか?

4

2 に答える 2

0

あなたが与えたリンクの例にコードが表示されます

- (float)extractSize:(UIPanGestureRecognizer *)panGestureRecognizer
{
    // 1
    float vel = ccpLength([panGestureRecognizer velocityInView:panGestureRecognizer.view]);
    float size = vel / 166.0f;
    size = clampf(size, 1, 40);
 
    // 2
    if ([velocities count] > 1) {
        size = size * 0.2f + [[velocities objectAtIndex:[velocities count] - 1] floatValue] * 0.8f;
    }
    [velocities addObject:[NSNumber numberWithFloat:size]];
    return size;
}

試してみませんか?それを...に置き換えます

- (float)extractSize:(UIPanGestureRecognizer *)panGestureRecognizer
{
    // 1
    float vel = ccpLength([panGestureRecognizer velocityInView:panGestureRecognizer.view]);
    float size = vel / 166.0f;
    size = clampf(size, 1, 40);
     
    // 2
    if ([velocities count] > 1) {
        size = size * 1.2f + [[velocities objectAtIndex:[velocities count] - 1] floatValue] * 0.8f;
    }
    [velocities addObject:[NSNumber numberWithFloat:size]];
    return size;
}

編集:とにかく、このメソッドで遊ぶと、必要なものが得られるはずです。

于 2012-07-12T11:23:47.287 に答える
0

コードを追加

size = 40 - size;

以下のコードのように、正確に逆にします。

- (float)extractSize:(UIPanGestureRecognizer *)panGestureRecognizer
{
  //! result of trial & error
  float vel = ccpLength([panGestureRecognizer velocityInView:panGestureRecognizer.view]);

  float size = vel / 166.0f;

  size = clampf(size/2, 1, 20);

  if ([velocities count] > 1) {
    size = size * 0.2f + [[velocities objectAtIndex:[velocities count] - 1] floatValue] * 0.8f;
  }
  [velocities addObject:[NSNumber numberWithFloat:size]];
  return size;
}
于 2012-11-23T10:18:18.500 に答える