在iphone中顺利绘图

时间:2012-07-12 11:02:43

标签: iphone opengl-es drawing line smooth

我想在绘图应用程序中绘制线条 我想绘制线,如下图所示。

enter image description here

在这里你可以看到,在顶部和底部的线宽超过中间线。 根据应用程序,当用户绘制缓慢时,线宽需要增加,当用户快速绘制时,线宽会减小。

我试过http://www.merowing.info/2012/04/drawing-smooth-lines-with-cocos2d-ios-inspired-by-paper/

但这与我的需要相反。

可以对这种平滑的绘图有任何想法吗?

2 个答案:

答案 0 :(得分: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;
}

编辑:无论如何,使用此方法可以获得您想要的效果。

答案 1 :(得分: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;
}