使用CGContextSetFillColorWithColor后,为什么我的图像会颠倒

时间:2013-04-19 21:34:45

标签: ios objective-c core-graphics mkannotation

我正在尝试将颜色填充应用于MKAnnotation。我发现一些代码几乎可以工作,但由于某种原因填充的图像在应用填充后颠倒了。

以下是我在地图图钉上运行的当前代码。

CGRect rect = CGRectMake(0, 0, self.image.size.width, self.image.size.height);
    UIGraphicsBeginImageContext(self.image.size);
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextClipToMask(context, rect, self.image.CGImage);
    CGContextSetFillColorWithColor(context, [[UIColor grayColor] CGColor]);
    CGContextFillRect(context, rect);
    CGContextRotateCTM(context, 90);
    UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    UIImage *flippedImage = [UIImage imageWithCGImage:img.CGImage
                                                scale:1.0 orientation:self.image.imageOrientation];

    self.image = flippedImage;

此代码运行后,这是引脚的样子。

http://d.pr/i/UaPU

我在想,如果我将当前的图像方向应用于flippedImage,那将会起到作用但不起作用。我也尝试设置self.image = img;并完全删除flippedImage var但结果仍然相同。

1 个答案:

答案 0 :(得分:6)

CGContext坐标系相对于UIView坐标系垂直翻转。 就像这样翻转它:  CGContextTranslateCTM(ctx,0,imageHeight); CGContextScaleCTM(ctx,1,-1);