如何在不混合重叠但与背景混合的情况下绘制具有不同不透明度的一系列线条?

时间:2017-05-02 15:09:36

标签: ios core-graphics

我正在尝试为绘图应用添加基本的压力敏感度。 当我尝试绘制笔划时,我遇到了一个问题,其中不透明度取决于压力 - 线段的重叠点混合了两条线,这会产生更暗的斑点:

enter image description here

这是我的代码:

File selectedFile = fc.getSelectedFile();
myTextArea.setText("Parent directory is " + selectedFile.getParentFile() + "\n" );

我想避免线条盖相遇的圆圈,但仍然可以在背景上保持透明度。

我已经尝试了上下文混合模式,但没有什么是完全令人满意的 - CGContextSetLineCap(context, kCGLineCapRound); CGContextSetLineWidth(context, path.thickness); CGContextSetStrokeColorWithColor(context, self.lineColor.CGColor); for (Segment *segment in segments) { CGContextMoveToPoint(context, segment.start.x, segment.start.y); CGContextAddLineToPoint(context, segment.end.x, segment.end.y); CGContextSetAlpha(context, segment.alpha); CGContextStrokePath(context); } 给了我流畅的线条,但是在最后一行有一个神器,我失去了与背景混合。

绑带不是问题。

1 个答案:

答案 0 :(得分:0)

如果有人遇到同样的问题,我解决它的方法是将线段绘制到CGLayer(核心图形层 - 不是核心动画层而不是核心图形透明层)。 我将CGLayer上下文混合模式设置为DestinationAtop,然后使用正常混合在我的真实CGContext中渲染CGLayer。 工作就像一个魅力。