我想将最高偏移量添加到CGContextFillEllipseInRect
。
当我使用topOffset
等于零时,一切正常。但是当我没有使用零偏移时,我得到了错误的圆圈。
我试图设置CGContextTranslateCTM(context, 0, topOffset);
,但结果是一样的。
float topOffset = 30.f;
CGContextRef context = UIGraphicsGetCurrentContext();
UIImage *img = [UIImage imageNamed:@"Circle.png"];
CGContextSetFillColorWithColor(context, [[UIColor colorWithPatternImage:img] CGColor]);
CGContextFillEllipseInRect(context, CGRectMake(0, topOffset, img.size.width, img.size.height));
没有偏移
顶部偏移量
答案 0 :(得分:3)
CGContextSetFillColorWithColor
方法准备填充给定颜色值的整个上下文区域。
当Stroking or Filling Method
被调用时,裁剪给定的笔划或填充区域。
因此,你会得到Ellipse或Rect或类似的东西......
相同背景但是给定FillRect()和FillEllipseInRect()的区域,
在你的情况下......
CGContextSetFillColorWithColor(context, [[UIColor colorWithPatternImage:img] CGColor]);
并填写整个区域
这就是为什么你的圈子出错了。
如果您想要单一填充色,请尝试CGContextSetRGBFillColor
设置填充色。
编辑,试试这个(在FillColor之前更改CTM并在椭圆绘制之前恢复)
float topOffset = 30.f;
CGContextRef context = UIGraphicsGetCurrentContext();
UIImage *img = [UIImage imageNamed:@"Circle.png"];
CGContextTranslateCTM(context, 0, topOffset);
CGContextSetFillColorWithColor(context, [[UIColor colorWithPatternImage:img] CGColor]);
CGContextTranslateCTM(context, 0, (-1*topOffset);
CGContextFillEllipseInRect(context, CGRectMake(0, topOffset, img.size.width, img.size.height));
抱歉英语不好:)