关于图像的Alpha值的问题

时间:2011-06-14 11:27:59

标签: iphone objective-c cocoa-touch

  // Make half-transparent grey, the background color for the layer
   UIColor *Light_Grey 
      = [UIColor colorWithRed : 110/255.0 
                        green : 110/255.0 
                        blue  : 110/255.0 
                        alpha : 0.5];

  // Get a CGColor object with the same color values
   CGColorRef cgLight_Grey = [Light_Grey CGColor];
   [boxLayer setBackgroundColor : cgLight_Grey];

  // Create a UIImage
   UIImage *layerImage = [UIImage imageNamed : @"Test.png"];

  // Get the underlying CGImage
   CGImageRef image = [layerImage CGImage];

  // Put the CGImage on the layer
   [boxLayer setContents : (id) image];

考虑上面的示例代码段。

UIColor * Light_Grey 设置为alpha值0.5。我的问题是:无论如何我可以设置 CGImageRef图像的alpha值吗?

我问这个的原因是即使 boxLayer 的alpha值为0.5,设置在 BoxLayer 之上的任何图像似乎都有一个alpha默认值为1 ,这将掩盖直接位于图像下方的任何内容。

希望有人知道这一点可以提供帮助。

1 个答案:

答案 0 :(得分:1)

看起来你可以使用CGImageCreate复制并使用解码数组重新缩放alpha(例如0.0-0.5)

  

解码

     

图像的解码数组。如果你   不想让你重新映射   图像的颜色值,传递NULL   解码数组。对于每种颜色   图像颜色空间中的组件   (包括alpha分量),a   decode array提供了一对值   表示的上限和下限   范围。例如,解码阵列   对于RGB颜色的源图像   空间总共包含六个条目,   由一对红色组成,   绿色和蓝色。当图像是   渲染,Quartz使用线性   转换为原始地图   组件值转换为相对数字   在你指定的范围内   适合目的地颜色   空间。