0

Quartz 2d のヘルプが必要です。これは私にとってまったく新しいものです。

基本的に、私のアプリはタッチに従う必要があり、中心から始まる線を複数回描画します。問題は、それが動的でなければならず、線が均等に広がる必要があることです(中心から始まるタコのようなものです)。Androidでの方法は、座標系を回転させて複数回描画するよりも、形状パスを配列で覚えていることですが、iOSでそれを行う方法がわかりません。

私の回転機能

- (void) rotateContext:(int)angle 
{


    CGContextTranslateCTM(UIGraphicsGetCurrentContext(), self.center.x, self.center.y);
    CGContextRotateCTM(UIGraphicsGetCurrentContext(), radians(angle));
    CGContextTranslateCTM(UIGraphicsGetCurrentContext(), -self.center.x, -self.center.y);


}

drawRect() で実行しようとした場合にのみ機能し、すべてのパスを回転させます。

問題を解決する良い方法を教えてください。

ありがとう

4

1 に答える 1

0

これは解決策につながる可能性があります:( コンパイルさえできるかもしれません)

/* setup the context */
UIBezierPath *bpath = [UIBezierPath bezierPath];
UIBezierPath *subpath =
[UIBezierPath bezierPathWithOvalInRect:<#some rect#>];
[bpath appendPath:subpath];
/* add more stuff to the path as you wish */

bezierPath.lineWidth = 2;     
/* draw the same path rotated multiple times */
for(NSInteger i = 0; i < 4; i++) {
    [bpath applyTransform:CGAffineTransformMakeRotation(M_PI_2 * i)];
    [bpath stroke];
}
/* teardown the context */

ベジエの回転はトリッキーです。期待する結果に応じて、より複雑な変換を適用する必要があります。

これらのベジエ パス オブジェクトは、配列または必要なものに格納できます。

于 2013-05-28T20:30:29.163 に答える