java 绘图 渐变_在CAShapeLayer图形下方绘制渐变

我正在使用应用于CAShapeLayer的CGPath绘制图形 . 图形本身被绘制得很好,但我想在之后添加一个渐变 . 我的问题是路径是从最后一个点到第一个点的直线关闭(见下文) - 这会使渐变填充看起来完全荒谬 .

tdNm9.png

据我所知,绕过这个问题的唯一方法是画两条额外的线:一条从图的最后一点到右下角,另一条线从左下角开始 . 这将很好地关闭路径,但它会为图形添加一个底线,我不想要 .

如果我使用CGContext,我可以通过将最后两行的笔触颜色更改为透明来轻松解决此问题 . 但是,使用下面的代码,我看不出那是可能的 .

CGMutablePathRef graphPath = CGPathCreateMutable();

for (NSUInteger i = 0; i < self.coordinates.count; i++) {

CGPoint coordinate = [self.coordinates[i] CGPointValue];

if (!i) {

CGPathMoveToPoint(graphPath, NULL, coordinate.x, coordinate.y);

} else {

CGPathAddLineToPoint(graphPath, NULL, coordinate.x, coordinate.y);

}

}

CAShapeLayer *graphLayer = [CAShapeLayer new];

graphLayer.path = graphPath;

graphLayer.strokeColor = [UIColor whiteColor].CGColor;

graphLayer.fillColor = [UIColor redColor].CGColor;

[self.layer addSublayer:graphLayer];

我希望你们能帮助我!

Update: 您建议我可以创建CAGradientLayer,然后将图层应用为其掩码 . 我没有给CAShapeLayer一个红色填充物 . 正如我所看到的,如果我将上层应用为CAGradientLayer的掩码,则某些渐变位于图形上方,有些则位于下方 . 我想要的是将所有渐变放置在图形的正下方 .

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值