0

お絵かきアプリを作っています。多色線画が特徴のひとつ。ユーザーが画面をタッチアップし、その上に線を引くように機能する必要があります。線の色が滑らかに変化します。そのようにhttp://www.examples.pavelgatilov.com/Screen%20Shot%202013-09-22%20at%208.37.42%20PM.png

いくつかのアプローチを試みましたが、うまくいきませんでした。

私の線画方法は以下の通りです:

- (void) drawLineFrom:(CGPoint)from to:(CGPoint)to width:(CGFloat)width
{
self.drawColor = toolColor;
UIGraphicsBeginImageContext(self.frame.size);
CGContextRef ctx = UIGraphicsGetCurrentContext();
CGContextScaleCTM(ctx, 1.0f, -1.0f);
CGContextTranslateCTM(ctx, 0.0f, -self.frame.size.height);
if (drawImage != nil) {
    CGRect rect = CGRectMake(0.0f, 0.0f, self.frame.size.width, self.frame.size.height);
    CGContextDrawImage(ctx, rect, drawImage.CGImage);
}
CGContextSetLineCap(ctx, kCGLineCapRound);
CGContextSetLineWidth(ctx, width);
CGContextSetStrokeColorWithColor(ctx, self.drawColor.CGColor);
CGContextMoveToPoint(ctx, from.x, from.y);
CGContextAddLineToPoint(ctx, to.x, to.y);
CGContextStrokePath(ctx);
CGContextFlush(ctx);
drawImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
drawLayer.contents = (id)drawImage.CGImage;
}

ご協力いただきありがとうございます

4

1 に答える 1

2

正確にどの色、どのように変化するか、どのような効果が必要か、ラインのターンで何が起こるかに応じて、次のいくつかの組み合わせを検討することをお勧めします。

  • CGContextDrawLinearGradientユーザーが描いたパスをマスキングします。
  • colorWithPatternImage:
  • CGContextDrawLinearGradient別のレイヤーの後ろに描画し、透明度をトップレイヤーに描画しますkCGBlendModeClear
于 2013-09-22T17:58:53.553 に答える