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);
// 绘制直线