Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 是否可以使用核心图形绘制单个通道?_Ios_Swift_Core Graphics_Channel - Fatal编程技术网

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)。使用这些,只能混合纯红色、纯绿色或纯蓝色的图像。例如,无法使用此技术在半透明紫色对象后面绘制半透明对象。