0

iPhoneアプリに、UIViewで円グラフを描画するコードがあります。すべてが素晴らしいですが、チョークのようなテクスチャを使用して輪郭を描画し、円グラフのさまざまな色を塗りつぶすことができる必要があります。

各領域の既存のコードからの抜粋は次のとおりです。

円グラフの周りに円を描く:

CGContextRef ctx = UIGraphicsGetCurrentContext();

CGContextSetRGBStrokeColor(ctx, 1.0, 1.0, 1.0, 1.0);
CGContextSetLineWidth(ctx, 8.0);

// Draw a thin line around the circle
CGContextAddArc(ctx, x, y, r, 0.0, 360.0*M_PI/180.0, 0);
CGContextClosePath(ctx);
CGContextDrawPath(ctx, kCGPathStroke);

...そしてパイのセグメントを描画します:

CGContextSetRGBStrokeColor(ctx, 1.0, 1.0, 1.0, 1.0);
            CGContextSetLineWidth(ctx, 8.0);
            CGContextMoveToPoint(ctx, x, y);
            CGContextAddArc(ctx, x, y, r, (startDeg-90)*M_PI/180.0, (endDeg-90)*M_PI/180.0, 0);
            CGContextClosePath(ctx);
            CGContextDrawPath(ctx, kCGPathStroke);

...次にカラーフィルで塗りつぶします:

CGContextSetRGBFillColor(ctx, color.red, color.green, color.blue, color.alpha );
            CGContextMoveToPoint(ctx, x, y);
            CGContextAddArc(ctx, x, y, r, (startDeg-90)*M_PI/180.0, (endDeg-90)*M_PI/180.0, 0);
            CGContextClosePath(ctx);
            CGContextFillPath(ctx);

使用されている変数の多くの変数宣言を貼り付けていないという事実を無視して、コードがかなり自明であることを願っています。

今:線/円弧の実際の描画にテクスチャを使用するようにコードを変更するにはどうすればよいですか?

同様に、カラーフィルの代わりにテクスチャフィルを使用するにはどうすればよいですか?

私はこのアプリを完成させようとしていますが、これが私の最後のつまずきです。SOやウェブ上の他の場所での他の質問は、私が従うことができる方法で質問に答えていないようです。

どんな助けでもありがたいことに受け取られます!

ロバート

4

1 に答える 1

4

これは時代遅れですが、次の簡単なコード スニペットを使用して、塗りつぶしまたは線のパターンを設定できます。

  // Somewhere in initialization code.
  UIColor *pattern = [UIColor colorWithPatternImage:[UIImage imageNamed:@"pattern.png"]];
  CGColorRef fillColor = [pattern CGColor];
  CGColorRef strokeColor = [pattern CGColor];

  // Probably in |draw| method call.
  CGContextSetStrokeColorWithColor(context, strokeColor);
  CGContextSetFillColorWithColor(context, fillColor);

それが誰かを助けることを願っています。他にも非常に高度な可能性があります。パターンをさまざまな方法で操作できます: シフト、スケーリング、回転、色付きまたはステンシル パターンの使用、その他多くの方法がありますが、これには API ドキュメントを深く掘り下げる必要があります。

于 2011-04-26T22:52:45.737 に答える