我正在尝试为绘图应用添加基本的压力敏感度。 当我尝试绘制笔划时,我遇到了一个问题,其中不透明度取决于压力 - 线段的重叠点混合了两条线,这会产生更暗的斑点:
这是我的代码:
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);
}
给了我流畅的线条,但是在最后一行有一个神器,我失去了与背景混合。
绑带不是问题。
答案 0 :(得分:0)
如果有人遇到同样的问题,我解决它的方法是将线段绘制到CGLayer(核心图形层 - 不是核心动画层而不是核心图形透明层)。 我将CGLayer上下文混合模式设置为DestinationAtop,然后使用正常混合在我的真实CGContext中渲染CGLayer。 工作就像一个魅力。