3

パスを追加または追加する方法(すでに作成したもの)を見つけようとしており、パスが描画される場所を何らかの形で設定できるようにしています。

これが私が話していることの例です:

//everything here can be compiled in a regular UIViewController
//this example is very trivial but it illustrates basically what I want to do
CGRect preMadeRect = CGRectMake(0.0f, 0.f, 50.f, 50.f);
CGPathRef preMadePath = CGPathCreateWithEllipseInRect(preMadeRect, NULL);

UIGraphicsBeginImageContext(self.view.frame.size);
CGContextRef context = UIGraphicsGetCurrentContext();

//I thought that maybe if I moved to a new point
//the path would respect the starting point as its new 
//x and y coordinates
CGContextMoveToPoint(context, 50.f, 50.f);
//I am adding a path
//I want the path to be positioned at new coordinates
//within the context
CGContextAddPath(context, preMadePath);
CGContextStrokePath(context);

UIImage *resultImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

UIImageView *imageView = [[UIImageView alloc]initWithImage:resultImage];
[self.view addSubview: imageView];

どんなアイデアでも大歓迎です。

4

1 に答える 1

3

パス内のポイントを変更することはできません。それらは設定されています。ただし、代わりに座標系を変更して、コンテキストに変換を適用できます。

パスは、原点 (0,0) に 1 つのコーナーを持つ長方形を定義します。デフォルトでは、原点は画像の左上 (または左下) 隅にあります。コンテキストの座標系を 50,50 で変換してパスを描画すると (0,0 のまま)、コーナーから 50 ピクセル離れた位置に表示されます。

CGContextTranslateCTMドキュメントを参照してください。

他の描画を行っていて、座標系の変更を元に戻す必要がある場合はCGContextSaveGState、 andも使用する必要がある場合があります。CGContextRestoreGState

于 2012-04-25T23:03:48.037 に答える