我已经使用类似于这个 SO question中所示的方法设置了一个绘图工具......我有一个 UIView 的子类,它跟踪触摸,创建UIBezierPath对象,将路径添加到数组,然后将它们绘制到视图中绘制矩形。该视图是透明的 ([UIColor clearColor], opaque=NO),并放置在以 PDF 和 Word 格式显示文档的 UIWebView 上。
我想使用这个工具来突出显示文本,所以我使用了带有 0.5 alpha 的黄色笔触颜色。这工作得很好,但是颜色使文本在重叠的地方看起来褪色。我正在阅读kCGBlendModeMultiply混合模式的描述,并认为这将是完美的——它应该允许文本“穿透”突出显示颜色以获得更好的对比度。
但是,我看不出 kCGBlendModeNormal、kCGBlendModeMultiply 或我尝试过的任何随机混合模式之间有任何区别。这些真的有效吗,还是只在某些情况下有效?
这是我的drawRect代码:
- (void)drawRect:(CGRect)rect {
for (UIBezierPath *path in self.paths) {
[[UIColor colorWithRed:1 green:1 blue:0 alpha:0.5] setStroke]; // yellow
//[path stroke]; // uses default blend mode
[path strokeWithBlendMode:kCGBlendModeMultiply alpha:1.0]; // looks the same as above
}
}
我尝试将颜色的 alpha 设置为 1.0,将 strokeWithBlendMode 方法的 alpha 参数设置为 0.5,但这没有任何区别。我错过了什么吗?