IOS使用drawrect在图像上创建蒙版
Posted
技术标签:
【中文标题】IOS使用drawrect在图像上创建蒙版【英文标题】:IOS Create Mask on an image using drawrect 【发布时间】:2014-09-08 02:48:48 【问题描述】:我创建了一个绘制折线图的函数,如何将折线图用作蒙版并将其放在图像之上?图像在不同的高度上有不同的颜色,所以我想做的是用折线图遮罩后,折线图会在不同的层次上显示不同的颜色。非常感谢您帮助我:)
- (void)drawLineGraphWithContext:(CGContextRef)ctx
CGContextSetLineWidth(ctx, 2.0);
CGContextSetStrokeColorWithColor(ctx, [[UIColor colorWithRed:1.0 green:0.5 blue:0 alpha:1.0] CGColor]);
int maxGraphHeight = kGraphHeight - kOffsetY;
CGContextBeginPath(ctx);
CGContextMoveToPoint(ctx, kOffsetX, kGraphHeight - maxGraphHeight * data[0]);
for (int i = 1; i < sizeof(data); i++)
CGContextAddLineToPoint(ctx, kOffsetX + i * kStepX, kGraphHeight - maxGraphHeight * data[i]);
CGContextDrawPath(ctx, kCGPathStroke);
CGContextSetFillColorWithColor(ctx, [[UIColor colorWithRed:1.0 green:0.5 blue:0 alpha:1.0] CGColor]);
for (int i = 0; i < sizeof(data) - 1; i++)
float x = kOffsetX + i * kStepX;
float y = kGraphHeight - maxGraphHeight * data[i];
CGRect rect = CGRectMake(x - kCircleRadius, y - kCircleRadius, 2 * kCircleRadius, 2 * kCircleRadius);
CGContextAddEllipseInRect(ctx, rect);
CGContextDrawPath(ctx, kCGPathFillStroke);
CGPathRef myPath = CGContextCopyPath(ctx);
CAShapeLayer *shapeLayer = [[CAShapeLayer alloc] init];
CGPathRef myPath = CGContextCopyPath(ctx);
shapeLayer.path = myPath;
_imageView.layer.mask = shapeLayer;
【问题讨论】:
你没有alloc init
你的CAShapeLayer
。
正如 Szlosek 所说。你需要初始化 CAShapeLayer
已经修改了代码,但是什么也没发生......
【参考方案1】:
试着这样做。
1. Put the Image into an ImageView.
2. Since you already have the Path. And rite now, you will get the last
point as `path.currentPoint`. Add a Line to the `bottomRight` then
to `bottomLeft` and then to the `startingPoint` of the Path. You
will need to store the FirstPoint of the Path Somewhere for this.
Also, all the Path drawing should be in reference to the `bounds` of
the ImageView.
3. Create a CAShapeLayer with the path above. `shapeLayer.path = path`.
4. Set it as mask of the imageView -- imageView.mask = shapeLayer`.
试试这个方法。干杯,玩得开心。
【讨论】:
非常感谢。我已经完成了前 3 点。但在第 4 点,在 UIIMageView 类型的对象上找不到错误属性掩码 既然您已经创建了正确的路径,那么只需将其设置为 imageView 的掩码 已编辑代码,但无法正常工作...在函数底部添加了几行,我做错了吗?以上是关于IOS使用drawrect在图像上创建蒙版的主要内容,如果未能解决你的问题,请参考以下文章
如何在 VC.m 尝试加载之前保存使用 drawRect 绘制的图像?