在CGContext中定位预先制作的CGPath

时间:2012-04-25 22:59:53

标签: ios quartz-2d cgcontext

我试图想出一种方法来添加或追加一条路径(我已经做过),并且能够以某种方式设置路径绘制位置的位置。

这是我正在谈论的一个例子:

//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];

任何想法都将不胜感激。

1 个答案:

答案 0 :(得分:3)

您无法更改路径中的点数;他们定了。但是,您可以将变换应用于上下文,改为更改坐标系。

您的路径定义了一个矩形,其原点(0,0)有一个角。默认情况下,原点位于图像的左上角(或左下角)。如果你将上下文的坐标系翻译50,50,然后绘制路径(仍然是0,0),它将显示距离角落50个像素。

在文档中查找CGContextTranslateCTM

如果您正在进行其他绘图并且需要撤消坐标系更改,则可能还需要使用CGContextSaveGStateCGContextRestoreGState