如何使用 CGContext 模糊线条的边缘

Posted

技术标签:

【中文标题】如何使用 CGContext 模糊线条的边缘【英文标题】:How to blur edges of lines using CGContext 【发布时间】:2012-07-26 02:20:10 【问题描述】:

我正在使用 CGContext 绘制线条,但我想让它的边缘模糊。我检查了阴影,但在阴影中,线条的边缘并不柔软和光滑。请告诉我如何使线条边缘模糊。

这是code link

【问题讨论】:

【参考方案1】:

我不完全确定你所说的模糊线条的“边缘”是什么意思,但你可以尝试先用更大的线宽绘制相同的路径,然后用逐渐变细和变暗的线来绘制路径。

【讨论】:

请详细告诉我如何做到这一点? 一旦你在你的上下文中创建了某种路径,来绘制你调用 CGContextStrokePath 的路径。在此之前,您可以使用 CGContextSetRGBStrokeColor 和 CGContextSetLineWidth 设置绘制的线宽和颜色。举个简单的例子,你可以画线 3 次,首先用 10 像素的线宽和某种浅灰色的颜色,然后用 5 像素的宽度和更深的灰色,然后用 2 的宽度像素和纯黑色。 我不确定你的意思。这种方法的要点是一种临时的方法,以绘制的线为中心进行渐变。更粗和更褪色的线条的渐进层实际上是“渐变”,使您不必勾勒整个路径并使用 CGGradients 绘制真正的渐变。【参考方案2】:

绘制线的其他方式..我希望这有助于绘制线并增加线宽...

   - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
    
        //// DRAW LINE....


           UIView *lineView = [[[UIView alloc] initWithFrame:CGRectMake(10, 30, cell.contentView.bounds.size.width, 3)] autorelease];

           //Replece the 3 and put the 5 for Increse the line Width

            lineView.backgroundColor = [UIColor redColor];
            lineView.autoresizingMask = 0x5f;
        [cell.contentView addSubview:lineView];
            

【讨论】:

这与问题无关。这段代码添加了一个狭窄的子视图来呈现一条直线,问题是关于绘制路径。 同意 CGContext 的全部内容,尽管我猜子视图方法可以替代图像

以上是关于如何使用 CGContext 模糊线条的边缘的主要内容,如果未能解决你的问题,请参考以下文章

Seaborn violinplots:如何获得小提琴边缘的线条路径?

如何将线条拟合到边缘并找到中心点(opencv)

CGContext 和 CGContextRef 在 Swift 中一样吗?这是如何运作的?

CGContext 给出了意想不到的线宽

模糊边缘的着色器,或如何绘制光线

如何使用边缘保留的梯度扩散平滑滤波器模糊图像