background image

alpha 值指定了每个像素的不透明度。

    根据上面讲述的知识点,笔者定义了被渲染内存区域如下:

imageData = malloc((iFrame.size.width)*(iFrame.size.height)*32);

        笔 者 这 里 在 屏 幕 每 个 像 素 上 使 用 了 32-bits 来 表 示 RGBA 颜 色 格 式 , 那 么 参 数
bitsPerComponent 就为 32/4=8,各个参数的定义如下:

iDevice 

CGBitmapContextCreate(imageData,iFrame.size.width,iFrame.size.height,8,32*(iFrame.size.widt
h),iColorSpace,kCGImageAlphaPremultipliedLast);

    这里笔者获取 iColorSpace 的方法如下:

iColorSpace = CGColorSpaceCreateDeviceRGB();

    CGColorSpaceCreateDeviceRGB()方法可以获取设备无关的 RGB 颜色空间,这个颜色空
间需要调用

CGColorSpaceRelease()进行释放。

    在创建成功被渲染的内存区域的“视图上下文”iDevice 后,那么读者就可以在这个被渲染
的内存区域的

“位图上下文”上进行绘制操作了,正如上面所讲的,所有的绘制操作将在被

渲染的内存区域中被渲染成位图数据,绘制操作如下:

         // 绘制图片
         CGContextDrawImage(iDevice, CGRectMake(0, 0, iFrame.size.width, iFrame.size.height), 
aImage);
        
         // 绘制半透明矩形
         CGRect rt;
        
         rt.origin.x = 100;
         rt.origin.y = 20;
         rt.size.width = 200;
         rt.size.height = 200;
        
         CGContextSaveGState(iDevice);
         CGContextSetRGBFillColor(iDevice, 1.0, 1.0, 1.0, 0.5);
         CGContextFillRect(iDevice, rt);
         CGContextRestoreGState(iDevice);
        
         CGContextStrokePath(iDevice);
        
         // 绘制直线