Core Graphics的研究CGBitmapContext篇

Core Graphics(核心图形框架)

核心图形框架基于Quartz高级绘图引擎。它提供低级别、轻量级的二维渲染,具有无与伦比的输出保真度。使用此框架可以处理基于路径的绘图、转换、颜色管理、屏幕外渲染、模式、渐变和阴影、图像数据管理、图像创建和图像遮罩,以及PDF文档的创建、显示和分析。

在macOS中,核心图形还包括用于处理显示硬件、低级用户输入事件和窗口系统的服务。

相关类的介绍

CGBitmapContext

一种CGContextRef,可用于将位绘制到内存中。

CGBitmapContext(位图图形上下文)中每个像素的组件数由CGColorSpaceRef定义的颜色空间指定。位图图形上下文指定位图是否应包含alpha通道,以及如何生成位图

1. 创建一个图形上下文(CGBitmapContextCreate)

/*
参数介绍
1.data:指向内存中要呈现图形的目标的指针。此内存块的大小至少应为(每行字节数*图形高度)字节。
如果希望此函数为位图分配内存,请传递NULL。这将使您从管理自己的内存中解放出来,从而减少内存泄漏问题。
2. width:图形宽度
3. height:图形高度
4. bitsPerComponent:内存中像素的每个组成部分使用的位数
5. bytesPerRow: 每行位图要使用的内存字节数。如果数据参数为空,则传递值0将自动计算该值
6. colorspace: 用于位图上下文的颜色空间。注意,位图图形上下文不支持索引颜色空间
7. bitmapInfo: 用于指定位图是否应包含alpha通道、alpha通道在像素中的相对位置以及像素组件是浮点值还是整数值的信息的常量,用于指定alpha通道信息的常量使用cgimagealphanfo类型声明。还可以传递与CGBitmapInfo类型关联的其他常量。
*/
CGContextRef CGBitmapContextCreate(void *data, size_t width, size_t height, size_t bitsPerComponent, size_t bytesPerRow, CGColorSpaceRef space, uint32_t bitmapInfo);

 CGBitmapContextCreate 返回值是新的位图上下文,如果无法创建上下文,则为空。需要用CGContextRelease释放此对象。

2.CGBitmapContextCreateWithData(使用指定的回调函数创建位图图形上下文)

/*
参数介绍
1.data:指向内存中要呈现图形的目标的指针。此内存块的大小至少应为(每行字节数*图形高度)字节。
如果希望此函数为位图分配内存,请传递NULL。这将使您从管理自己的内存中解放出来,从而减少内存泄漏问题。
2. width:图形宽度
3. height:图形高度
4. bitsPerComponent:内存中像素的每个组成部分使用的位数
5. bytesPerRow: 每行位图要使用的内存字节数。如果数据参数为空,则传递值0将自动计算该值
6. colorspace: 用于位图上下文的颜色空间。注意,位图图形上下文不支持索引颜色空间
7. bitmapInfo: 用于指定位图是否应包含alpha通道、alpha通道在像素中的相对位置以及像素组件是浮点值还是整数值的信息的常量,用于指定alpha通道信息的常量使用cgimagealphanfo类型声明。还可以传递与CGBitmapInfo类型关联的其他常量。
8.releaseCallback:在释放位图数据时调用的自定义释放函数
9.releaseInfo:指向要传递给自定义发布回调的任何数据的指针
*/
CGContextRef CGBitmapContextCreateWithData(void *data, size_t width, size_t height, size_t bitsPerComponent, size_t bytesPerRow, CGColorSpaceRef space, uint32_t bitmapInfo, CGBitmapContextReleaseDataCallback releaseCallback, void *releaseInfo);

CGBitmapContextCreateWithData返回值是新的位图上下文,如果无法创建上下文,则为空。需要用CGContextRelease释放此对象

3. CGBitmapContextCreateImage 从位图图形上下文中的像素数据创建并返回CGImage

/*
参数介绍
1.context: 位图图形上下文
*/
CGImageRef CGBitmapContextCreateImage(CGContextRef context);

返回值:包含位图图形上下文快照的CGImage对象,如果未创建图像,则为空

 

获取有关BitmapContexts的信息的方法

1. CGBitmapContextGetBitmapInfo(获取与CGBitmapContext关联的位图信息)

/*
参数介绍
1.context: 位图图形上下文
*/
CGBitmapInfo CGBitmapContextGetBitmapInfo(CGContextRef context);

返回值:CGBitmapContext的位图信息,如果context不是位图图形上下文,则为0

2. CGBitmapContextGetAlphaInfo(返回与上下文关联的alpha信息,该信息指示位图上下文如何处理alpha组件)

/*
参数介绍
1. context 位图上下文
*/
CGImageAlphaInfo CGBitmapContextGetAlphaInfo(CGContextRef context);

返回值:位图信息常量。如果指定的上下文不是位图上下文,则返回kCGImageAlphaNone

3. CGBitmapContextGetBitsPerComponent(返回位图上下文中每个组件的位)

/*
参数介绍
1. context: 位图上下文
*/
size_t CGBitmapContextGetBitsPerComponent(CGContextRef context);

返回值:指定上下文中每个组件的位数,如果上下文不是位图上下文,则为0

4. CGBitmapContextGetBitsPerPixel(返回位图上下文的每像素位数)

/*
参数介绍
1. context: 要检查的位图上下文
*/
size_t CGBitmapContextGetBitsPerPixel(CGContextRef context);

返回值:指定上下文中每个像素的位数,如果上下文不是位图上下文,则为0。

5.CGBitmapContextGetBytesPerRow(返回位图上下文中每行的字节数)

/*
参数介绍
1. context: 要检查的位图上下文
*/
size_t CGBitmapContextGetBytesPerRow(CGContextRef context);

返回值:指定上下文的每行字节数,如果上下文不是位图上下文,则为0

6.CGBitmapContextGetColorSpace(返回位图上下文的颜色空间)

/*
参数介绍
1. context: 要检查的位图上下文
*/
CGColorSpaceRef CGBitmapContextGetColorSpace(CGContextRef context);

返回值: 指定上下文的颜色空间,如果上下文不是位图上下文,则为空。必要时需要保留和释放此对象

6. CGBitmapContextGetData(返回指向与位图上下文关联的图像数据的指针)

/*
参数介绍
1. context: 要检查的位图上下文
*/
void * CGBitmapContextGetData(CGContextRef context);

返回值:指向指定位图上下文的图像数据的指针,如果上下文不是位图上下文,则为空

7. CGBitmapContextGetHeight(返回位图上下文的高度(以像素为单位))

/*
参数介绍
1. context: 要检查的位图上下文
*/
size_t CGBitmapContextGetHeight(CGContextRef context);

返回值:指定上下文的高度(以像素为单位),如果上下文不是位图上下文,则为0

8. CGBitmapContextGetWidth(返回位图上下文的宽度(以像素为单位))

/*
参数介绍
1. context: 要检查的位图上下文
*/
size_t CGBitmapContextGetWidth(CGContextRef context);

返回值:指定上下文的宽度(以像素为单位),如果上下文不是位图上下文,则为0

9. CGBitmapContextReleaseDataCallback(用于释放与位图上下文关联的数据的回调函数)

typedef void (*CGBitmapContextReleaseDataCallback)(void *releaseInfo, void *data);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值