Ios 是否可以使用核心图形绘制单个通道?
我想在特定的渠道绘制使用核心图形 使用下面的代码,每个形状都使用单一通道颜色绘制,但第二个绿色填充矩形将覆盖上一个红色椭圆。我希望一个椭圆只在红色通道中,正方形只在绿色通道中。我试着使用透明层,但没有效果Ios 是否可以使用核心图形绘制单个通道?,ios,swift,core-graphics,channel,Ios,Swift,Core Graphics,Channel,我想在特定的渠道绘制使用核心图形 使用下面的代码,每个形状都使用单一通道颜色绘制,但第二个绿色填充矩形将覆盖上一个红色椭圆。我希望一个椭圆只在红色通道中,正方形只在绿色通道中。我试着使用透明层,但没有效果 UIGraphicsBeginImageContextWithOptions(size, false, 0.0) let context = UIGraphicsGetCurrentContext()! let circlePath = UIBezierPath(ovalIn: CGRect(
UIGraphicsBeginImageContextWithOptions(size, false, 0.0)
let context = UIGraphicsGetCurrentContext()!
let circlePath = UIBezierPath(ovalIn: CGRect(x: 0.0, y: 0.0, width: 50.0, height: 50))
let squarePath = UIBezierPath(rect: CGRect(x: 0.0, y: 0.0, width: 50.0, height: 50))
UIColor.red.setFill()
circlePath.fill()
UIColor.green.setFill()
squarePath.fill()
可以在各个通道中绘制吗?或者我必须绘制单个位图并在像素级将其组合?而不是使用(将贝塞尔路径绘制为完全不透明),您需要使用,它允许您将自定义不透明度指定为0
(完全透明)和1
(完全不透明)之间的CGFloat
有多种混合模式可用(请参见),用于指定部分透明曲面之间的交互方式。乘法是一个“合理的默认值”,但您可以使用它们,看看哪一个最符合您的设计。混合模式与Photoshop中的模式相同,因此有大量的在线教程、解释和示例,例如而不是使用(将贝塞尔路径绘制为完全不透明),您需要使用,这允许您将自定义不透明度指定为CGFloat
介于0
之间(完全透明)和1
(完全不透明)
有多种混合模式可用(请参见),用于指定部分透明曲面之间的交互方式。乘法是一个“合理的默认值”,但您可以使用它们,看看哪一个最符合您的设计。混合模式与Photoshop等中的模式相同,因此有大量在线教程、说明和示例,例如绘制到各个频道是徒劳的。即使你能做到这一点,它也只适用于绘制红色、绿色和蓝色的椭圆形。任何其他颜色都需要过渡才能正常工作,所以您应该直接这样做
UIColor.greeen.setFill()正在设置不透明的绿色,这就是为什么您会看到这种覆盖行为。显示的示例过于简单。我需要能够绘制不同的形状到不同的渠道,并在特定的渠道绘制位图。就我所知,透明度没有帮助。(假设我正确理解了这个问题)这没关系。您只有3个颜色通道,型号为3固定颜色(r、g、b)。使用这些,只能混合纯红色、纯绿色或纯蓝色的图像。例如,您不能使用此技术在半透明紫色对象后面绘制半透明对象。绘制单个通道是徒劳的。即使你能做到这一点,它也只适用于绘制红色、绿色和蓝色的椭圆形。任何其他颜色都需要过渡才能正常工作,所以您应该直接这样做UIColor.greeen.setFill()正在设置不透明的绿色,这就是为什么您会看到这种覆盖行为。显示的示例过于简单。我需要能够绘制不同的形状到不同的渠道,并在特定的渠道绘制位图。就我所知,透明度没有帮助。(假设我正确理解了这个问题)这没关系。您只有3个颜色通道,型号为3固定颜色(r、g、b)。使用这些,只能混合纯红色、纯绿色或纯蓝色的图像。例如,无法使用此技术在半透明紫色对象后面绘制半透明对象。