/* CoreGraphics - CGContext.h
Copyright (c) 2000-2012 Apple Inc.
All rights reserved. */ #ifndef CGCONTEXT_H_
#define CGCONTEXT_H_ #include <CoreFoundation/CFBase.h>
#include <CoreFoundation/CFAvailability.h>
#include <stdint.h> typedef struct CF_BRIDGED_TYPE(id) CGContext *CGContextRef; #include <CoreGraphics/CGBase.h>
#include <CoreGraphics/CGAffineTransform.h>
#include <CoreGraphics/CGColor.h>
#include <CoreGraphics/CGColorSpace.h>
#include <CoreGraphics/CGFont.h>
#include <CoreGraphics/CGGradient.h>
#include <CoreGraphics/CGImage.h>
#include <CoreGraphics/CGPath.h>
#include <CoreGraphics/CGPattern.h>
#include <CoreGraphics/CGPDFDocument.h>
#include <CoreGraphics/CGShading.h> CF_IMPLICIT_BRIDGING_ENABLED CF_ASSUME_NONNULL_BEGIN /* Drawing modes for paths. */ typedef CF_ENUM (int32_t, CGPathDrawingMode) {
kCGPathFill, //非零规则
kCGPathEOFill, //奇偶规则
kCGPathStroke, //画线
kCGPathFillStroke, //表示填充 画线
kCGPathEOFillStroke //表示描线 不是填充
}; /* Drawing modes for text. */ typedef CF_ENUM (int32_t, CGTextDrawingMode) {
kCGTextFill,
kCGTextStroke,
kCGTextFillStroke,
kCGTextInvisible,
kCGTextFillClip,
kCGTextStrokeClip,
kCGTextFillStrokeClip,
kCGTextClip
}; /* Text encodings. */ typedef CF_ENUM (int32_t, CGTextEncoding) {
kCGEncodingFontSpecific,
kCGEncodingMacRoman
} CG_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_9, __IPHONE_2_0, __IPHONE_7_0); /* Interpolation quality. */ typedef CF_ENUM (int32_t, CGInterpolationQuality) {
kCGInterpolationDefault = , /* Let the context decide. */
kCGInterpolationNone = , /* Never interpolate. */
kCGInterpolationLow = , /* Low quality, fast interpolation. */
kCGInterpolationMedium = , /* Medium quality, slower than kCGInterpolationLow. */
kCGInterpolationHigh = /* Highest quality, slower than kCGInterpolationMedium. */
}; //混合模式
typedef CF_ENUM (int32_t, CGBlendMode) {
/* Available in Mac OS X 10.4 & later. */
kCGBlendModeNormal, //正常
kCGBlendModeMultiply, //正片叠底
kCGBlendModeScreen, //滤色
kCGBlendModeOverlay, //叠加
kCGBlendModeDarken, //变暗
kCGBlendModeLighten, //变亮
kCGBlendModeColorDodge, //颜色减淡
kCGBlendModeColorBurn, //颜色加深
kCGBlendModeSoftLight, //柔光
kCGBlendModeHardLight, //强光
kCGBlendModeDifference, //差值
kCGBlendModeExclusion, //排除
kCGBlendModeHue, //色相
kCGBlendModeSaturation, //保护度
kCGBlendModeColor, //颜色
kCGBlendModeLuminosity, //明度 /* Available in Mac OS X 10.5 & later. The Porter-Duff "source over" mode is called `kCGBlendModeNormal':
R = S + D*(1 - Sa) Note that the Porter-Duff "XOR" mode is only titularly related to the
classical bitmap XOR operation (which is unsupported by
CoreGraphics). */ kCGBlendModeClear, /* R = 0 *///清空(如果图标背景色为白色则为全白)
kCGBlendModeCopy, /* R = S *///全色覆盖整个图片
kCGBlendModeSourceIn, /* R = S*Da *///线条变色
kCGBlendModeSourceOut, /* R = S*(1 - Da) *///背景变为目的色,线条自动变为白色
kCGBlendModeSourceAtop, /* R = S*Da + D*(1 - Sa) *///线条变色
kCGBlendModeDestinationOver, /* R = S*(1 - Da) + D *///背景色变为目的色,线条色不变
kCGBlendModeDestinationIn, /* R = D*Sa *///只看到线条色(本色)
kCGBlendModeDestinationOut, /* R = D*(1 - Sa) *///空白
kCGBlendModeDestinationAtop, /* R = S*(1 - Da) + D*Sa *///会把整个矩形的背景填充目的色 原色保留
kCGBlendModeXOR, /* R = S*(1 - Da) + D*(1 - Sa) *///线条变白,背景色变为目的色
kCGBlendModePlusDarker, /* R = MAX(0, (1 - D) + (1 - S)) *///.线条变为黑色, 背景色变为目的色
kCGBlendModePlusLighter /* R = MIN(1, S + D) *///线条变为白色
}; //返回上下文的类型标识符
CG_EXTERN CFTypeID CGContextGetTypeID(void)
CG_AVAILABLE_STARTING(__MAC_10_2, __IPHONE_2_0); /** Graphics state functions. **/
//压栈之后的修改不会影响之前的修改,如果撤销之后的修改,直接出栈就ok。
//压栈,保存一份当前图形上下文
CG_EXTERN void CGContextSaveGState(CGContextRef cg_nullable c)
CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0); //出栈,恢复一份当前图形上下文
CG_EXTERN void CGContextRestoreGState(CGContextRef cg_nullable c)
CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0); /** Coordinate space transformations. **/
//CTM(current transformation matrix当前转换矩阵
//坐标系x和y缩放
CG_EXTERN void CGContextScaleCTM(CGContextRef cg_nullable c,
CGFloat sx, CGFloat sy)
CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0); //坐标系平移,改变画布位置
CG_EXTERN void CGContextTranslateCTM(CGContextRef cg_nullable c,
CGFloat tx, CGFloat ty)
CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0); //坐标系旋转
CG_EXTERN void CGContextRotateCTM(CGContextRef cg_nullable c, CGFloat angle)
CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0); //transform仿射变换矩阵进行图形状态的变换
CG_EXTERN void CGContextConcatCTM(CGContextRef cg_nullable c,
CGAffineTransform transform)
CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0); //获取转换矩阵(CTM)
CG_EXTERN CGAffineTransform CGContextGetCTM(CGContextRef cg_nullable c)
CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0); /** Drawing attribute functions. **/ //设置线宽
CG_EXTERN void CGContextSetLineWidth(CGContextRef cg_nullable c, CGFloat width)
CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0); //设置线冒样式 枚举
CG_EXTERN void CGContextSetLineCap(CGContextRef cg_nullable c, CGLineCap cap)
CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0); //设置线连接样式
CG_EXTERN void CGContextSetLineJoin(CGContextRef cg_nullable c, CGLineJoin join)
CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0); //连接线内外角距离限制
CG_EXTERN void CGContextSetMiterLimit(CGContextRef cg_nullable c, CGFloat limit)
CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0); //画虚线
CG_EXTERN void CGContextSetLineDash(CGContextRef cg_nullable c, CGFloat phase,
const CGFloat * __nullable lengths, size_t count)
CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0); //设置渲染精度,数值越小,精度越高,越耗时
CG_EXTERN void CGContextSetFlatness(CGContextRef cg_nullable c, CGFloat flatness)
CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0); //设置透明度
CG_EXTERN void CGContextSetAlpha(CGContextRef cg_nullable c, CGFloat alpha)
CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0); //混合图层,后面绘制的图像会覆盖前面的,被覆盖不可见 此方法进行设置叠加状态。
CG_EXTERN void CGContextSetBlendMode(CGContextRef cg_nullable c, CGBlendMode mode)
CG_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0); /** Path construction functions. **/ /* 注意上下文在任何时候都有一个路径在使用:路径不是图形状态的一部分。 */ //开始新路径,废弃旧的
CG_EXTERN void CGContextBeginPath(CGContextRef cg_nullable c)
CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0); //移动到指定点
CG_EXTERN void CGContextMoveToPoint(CGContextRef cg_nullable c,
CGFloat x, CGFloat y)
CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0); //画线到指定点
CG_EXTERN void CGContextAddLineToPoint(CGContextRef cg_nullable c,
CGFloat x, CGFloat y)
CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0); //画三次贝塞尔曲线
CG_EXTERN void CGContextAddCurveToPoint(CGContextRef cg_nullable c, CGFloat cp1x,
CGFloat cp1y, CGFloat cp2x, CGFloat cp2y, CGFloat x, CGFloat y)
CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0); //绘制二次贝塞尔曲线
CG_EXTERN void CGContextAddQuadCurveToPoint(CGContextRef cg_nullable c,
CGFloat cpx, CGFloat cpy, CGFloat x, CGFloat y)
CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0); //关闭路径
CG_EXTERN void CGContextClosePath(CGContextRef cg_nullable c)
CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0); /** Path construction convenience functions. **/ //画矩形
CG_EXTERN void CGContextAddRect(CGContextRef cg_nullable c, CGRect rect)
CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0); //画矩形数组(多个矩形)
CG_EXTERN void CGContextAddRects(CGContextRef cg_nullable c,
const CGRect * __nullable rects, size_t count)
CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0); //画线条数组(多个线条)
CG_EXTERN void CGContextAddLines(CGContextRef cg_nullable c,
const CGPoint * __nullable points, size_t count)
CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0); //画椭圆
CG_EXTERN void CGContextAddEllipseInRect(CGContextRef cg_nullable c, CGRect rect)
CG_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0); //画圆弧 圆心,半径,开始角度,结束角度,是否顺时针
CG_EXTERN void CGContextAddArc(CGContextRef cg_nullable c, CGFloat x, CGFloat y,
CGFloat radius, CGFloat startAngle, CGFloat endAngle, int clockwise)
CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0); //画圆弧 两点和半径
CG_EXTERN void CGContextAddArcToPoint(CGContextRef cg_nullable c,
CGFloat x1, CGFloat y1, CGFloat x2, CGFloat y2, CGFloat radius)
CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0); //添加路径CGPath
CG_EXTERN void CGContextAddPath(CGContextRef cg_nullable c,
CGPathRef cg_nullable path)
CG_AVAILABLE_STARTING(__MAC_10_2, __IPHONE_2_0); /** Path stroking. **/ //将参数CGContextRef的路径直接画在当前上下文上
CG_EXTERN void CGContextReplacePathWithStrokedPath(CGContextRef cg_nullable c)
CG_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0); /** Path information functions. **/ //判断路径是否为空,目前的路径是否包含任何的子路径
CG_EXTERN bool CGContextIsPathEmpty(CGContextRef cg_nullable c)
CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0); //返回一个非空的路径中的当前点
CG_EXTERN CGPoint CGContextGetPathCurrentPoint(CGContextRef cg_nullable c)
CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0); //返回包含当前路径的最小矩形
CG_EXTERN CGRect CGContextGetPathBoundingBox(CGContextRef cg_nullable c)
CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0); //拷贝路径
CG_EXTERN CGPathRef __nullable CGContextCopyPath(CGContextRef cg_nullable c)
CG_AVAILABLE_STARTING(__MAC_10_2, __IPHONE_2_0); //路径中是否包含某个点
CG_EXTERN bool CGContextPathContainsPoint(CGContextRef cg_nullable c,
CGPoint point, CGPathDrawingMode mode)
CG_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0); /** Path drawing functions. **/ //指定绘制的模式,枚举
CG_EXTERN void CGContextDrawPath(CGContextRef cg_nullable c,
CGPathDrawingMode mode)
CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0); /** Path drawing convenience functions. **/ //填充路径包围的区域
CG_EXTERN void CGContextFillPath(CGContextRef cg_nullable c)
CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0); //使用奇偶规则填充区域
CG_EXTERN void CGContextEOFillPath(CGContextRef cg_nullable c)
CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0); //绘制路径
CG_EXTERN void CGContextStrokePath(CGContextRef cg_nullable c)
CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0); //填充矩形区域 rect参数
CG_EXTERN void CGContextFillRect(CGContextRef cg_nullable c, CGRect rect)
CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0); //填充多个区域
CG_EXTERN void CGContextFillRects(CGContextRef cg_nullable c,
const CGRect * __nullable rects, size_t count)
CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0); //绘制矩形框
CG_EXTERN void CGContextStrokeRect(CGContextRef cg_nullable c, CGRect rect)
CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0); //指定线宽绘制矩形框
CG_EXTERN void CGContextStrokeRectWithWidth(CGContextRef cg_nullable c,
CGRect rect, CGFloat width)
CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0); //擦除绘制的图形
CG_EXTERN void CGContextClearRect(CGContextRef cg_nullable c, CGRect rect)
CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0); //填充矩形内切圆
CG_EXTERN void CGContextFillEllipseInRect(CGContextRef cg_nullable c,
CGRect rect)
CG_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0); //绘制矩形内切圆
CG_EXTERN void CGContextStrokeEllipseInRect(CGContextRef cg_nullable c,
CGRect rect)
CG_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0); /*绘制多条线段,2N个CGPoint数组,1,2组成线段 以此类推
CGContextBeginPath(context);
for (k = 0; k < count; k += 2) {
CGContextMoveToPoint(context, s[k].x, s[k].y);
CGContextAddLineToPoint(context, s[k+1].x, s[k+1].y);
}
CGContextStrokePath(context); */ CG_EXTERN void CGContextStrokeLineSegments(CGContextRef cg_nullable c,
const CGPoint * __nullable points, size_t count)
CG_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0); /** Clipping functions. **/ //修改当前剪切路径,使用非零规则
CG_EXTERN void CGContextClip(CGContextRef cg_nullable c)
CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0); //修改当前剪切路径,使用奇偶规则
CG_EXTERN void CGContextEOClip(CGContextRef cg_nullable c)
CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0); //默认值剪切路径
CG_EXTERN void CGContextResetClip(CGContextRef c); //剪切遮罩处理(针对图片)
CG_EXTERN void CGContextClipToMask(CGContextRef cg_nullable c, CGRect rect,
CGImageRef cg_nullable mask)
CG_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0); //获取需要绘制的图形上下文位置和大小
CG_EXTERN CGRect CGContextGetClipBoundingBox(CGContextRef cg_nullable c)
CG_AVAILABLE_STARTING(__MAC_10_3, __IPHONE_2_0); /** Clipping convenience functions. **/ //剪切指定矩形区域,将路径置空
CG_EXTERN void CGContextClipToRect(CGContextRef cg_nullable c, CGRect rect)
CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0); //剪切多个矩形区域,路径置空
CG_EXTERN void CGContextClipToRects(CGContextRef cg_nullable c,
const CGRect * rects, size_t count)
CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0); /** Primitive color functions. **/ //填充指定颜色
CG_EXTERN void CGContextSetFillColorWithColor(CGContextRef cg_nullable c,
CGColorRef cg_nullable color)
CG_AVAILABLE_STARTING(__MAC_10_3, __IPHONE_2_0); //设置线条指定颜色
CG_EXTERN void CGContextSetStrokeColorWithColor(CGContextRef cg_nullable c,
CGColorRef cg_nullable color)
CG_AVAILABLE_STARTING(__MAC_10_3, __IPHONE_2_0); /** Color space functions. **/ //颜色空间填充
CG_EXTERN void CGContextSetFillColorSpace(CGContextRef cg_nullable c,
CGColorSpaceRef cg_nullable space)
CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0); //设置线框颜色空间
CG_EXTERN void CGContextSetStrokeColorSpace(CGContextRef cg_nullable c,
CGColorSpaceRef cg_nullable space)
CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0); /** Color functions. **/ //设置填充颜色空间
CG_EXTERN void CGContextSetFillColor(CGContextRef cg_nullable c,
const CGFloat * cg_nullable components)
CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0); //设置画笔颜色
CG_EXTERN void CGContextSetStrokeColor(CGContextRef cg_nullable c,
const CGFloat * cg_nullable components)
CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0); /** Pattern functions. **/ //设置位图填充
CG_EXTERN void CGContextSetFillPattern(CGContextRef cg_nullable c,
CGPatternRef cg_nullable pattern, const CGFloat * cg_nullable components)
CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0); //位图绘制线条和边框
CG_EXTERN void CGContextSetStrokePattern(CGContextRef cg_nullable c,
CGPatternRef cg_nullable pattern, const CGFloat * cg_nullable components)
CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0); //设置该c采用位图填充的相位
CG_EXTERN void CGContextSetPatternPhase(CGContextRef cg_nullable c, CGSize phase)
CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0); /** Color convenience functions. **/ //设置c的填充颜色为灰色 灰度和透明度
CG_EXTERN void CGContextSetGrayFillColor(CGContextRef cg_nullable c,
CGFloat gray, CGFloat alpha)
CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0); //设置c的线条颜色为灰色 灰度和透明度
CG_EXTERN void CGContextSetGrayStrokeColor(CGContextRef cg_nullable c,
CGFloat gray, CGFloat alpha)
CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0); //设置c的填充色 使用RGB颜色模块
CG_EXTERN void CGContextSetRGBFillColor(CGContextRef cg_nullable c, CGFloat red,
CGFloat green, CGFloat blue, CGFloat alpha)
CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0); //设置c的线条颜色 使用RGB颜色模块
CG_EXTERN void CGContextSetRGBStrokeColor(CGContextRef cg_nullable c,
CGFloat red, CGFloat green, CGFloat blue, CGFloat alpha)
CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0); //设置c的填充颜色 使用CMYK颜色模块
CG_EXTERN void CGContextSetCMYKFillColor(CGContextRef cg_nullable c,
CGFloat cyan, CGFloat magenta, CGFloat yellow, CGFloat black, CGFloat alpha)
CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0); //设置c的线条颜色 使用CMYK颜色模块
CG_EXTERN void CGContextSetCMYKStrokeColor(CGContextRef cg_nullable c,
CGFloat cyan, CGFloat magenta, CGFloat yellow, CGFloat black, CGFloat alpha)
CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0); /** Rendering intent. **/ /*设置当前图形状态的渲染意向
typedef CF_ENUM (int32_t, CGColorRenderingIntent) {
kCGRenderingIntentDefault,
kCGRenderingIntentAbsoluteColorimetric, //绝对色阶匹配
kCGRenderingIntentRelativeColorimetric, //相对色阶匹配
kCGRenderingIntentPerceptual, //视觉匹配,不同设备视觉一致
kCGRenderingIntentSaturation //饱和度匹配
};*/
CG_EXTERN void CGContextSetRenderingIntent(CGContextRef cg_nullable c,
CGColorRenderingIntent intent)
CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0); /** Image functions. **/ //绘制图形到c
CG_EXTERN void CGContextDrawImage(CGContextRef cg_nullable c, CGRect rect,
CGImageRef cg_nullable image)
CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0); //重复绘制的图形,填充当前区域
CG_EXTERN void CGContextDrawTiledImage(CGContextRef cg_nullable c, CGRect rect,
CGImageRef cg_nullable image)
CG_AVAILABLE_STARTING(__MAC_10_5, __IPHONE_2_0); //获取c在放大图片时的插值质量
CG_EXTERN CGInterpolationQuality
CGContextGetInterpolationQuality(CGContextRef cg_nullable c)
CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0); //设置c的插值质量水平
CG_EXTERN void CGContextSetInterpolationQuality(CGContextRef cg_nullable c,
CGInterpolationQuality quality)
CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0); /** Shadow support. **/ //设置阴影在X、Y方向上的偏移。模糊度、阴影颜色
CG_EXTERN void CGContextSetShadowWithColor(CGContextRef cg_nullable c,
CGSize offset, CGFloat blur, CGColorRef __nullable color)
CG_AVAILABLE_STARTING(__MAC_10_3, __IPHONE_2_0); //设置阴影在X、Y方向上的偏移。模糊度(数字越大越模糊)、阴影颜色默认为1/3透明黑
CG_EXTERN void CGContextSetShadow(CGContextRef cg_nullable c, CGSize offset,
CGFloat blur)
CG_AVAILABLE_STARTING(__MAC_10_3, __IPHONE_2_0); /** Gradient and shading functions. **/ //设置一个线性渐变填充 开始点和结束点
CG_EXTERN void CGContextDrawLinearGradient(CGContextRef cg_nullable c,
CGGradientRef cg_nullable gradient, CGPoint startPoint, CGPoint endPoint,
CGGradientDrawingOptions options)
CG_AVAILABLE_STARTING(__MAC_10_5, __IPHONE_2_0); //设置一个圆形渐变填充 开始点和结束点
CG_EXTERN void CGContextDrawRadialGradient(CGContextRef cg_nullable c,
CGGradientRef cg_nullable gradient, CGPoint startCenter, CGFloat startRadius,
CGPoint endCenter, CGFloat endRadius, CGGradientDrawingOptions options)
CG_AVAILABLE_STARTING(__MAC_10_5, __IPHONE_2_0); //填充剪切路径 用指定的阴影背景
CG_EXTERN void CGContextDrawShading(CGContextRef cg_nullable c,
cg_nullable CGShadingRef shading)
CG_AVAILABLE_STARTING(__MAC_10_2, __IPHONE_2_0); /** Text functions. **/ //设置当前字符间距
CG_EXTERN void CGContextSetCharacterSpacing(CGContextRef cg_nullable c,
CGFloat spacing)
CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0); //设置绘制文本的位置
CG_EXTERN void CGContextSetTextPosition(CGContextRef cg_nullable c,
CGFloat x, CGFloat y)
CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0); //返回正在绘制文本的位置
CG_EXTERN CGPoint CGContextGetTextPosition(CGContextRef cg_nullable c)
CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0); //设置当前文本矩阵
CG_EXTERN void CGContextSetTextMatrix(CGContextRef cg_nullable c,
CGAffineTransform t)
CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0); //返回c矩阵
CG_EXTERN CGAffineTransform CGContextGetTextMatrix(CGContextRef cg_nullable c)
CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0); //设置c的绘图模式
CG_EXTERN void CGContextSetTextDrawingMode(CGContextRef cg_nullable c,
CGTextDrawingMode mode)
CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0); //设置c的字体
CG_EXTERN void CGContextSetFont(CGContextRef cg_nullable c,
CGFontRef cg_nullable font)
CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0); //设置c的字体大小
CG_EXTERN void CGContextSetFontSize(CGContextRef cg_nullable c, CGFloat size)
CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0); //在提供的位置绘制字形
CG_EXTERN void CGContextShowGlyphsAtPositions(CGContextRef cg_nullable c,
const CGGlyph * cg_nullable glyphs, const CGPoint * cg_nullable Lpositions,
size_t count)
CG_AVAILABLE_STARTING(__MAC_10_5, __IPHONE_2_0); /** PDF functions. **/ //绘制一个PDF页面
CG_EXTERN void CGContextDrawPDFPage(CGContextRef cg_nullable c,
CGPDFPageRef cg_nullable page)
CG_AVAILABLE_STARTING(__MAC_10_3, __IPHONE_2_0); /** Output page functions. **/ /* Begin a new page. */ CG_EXTERN void CGContextBeginPage(CGContextRef cg_nullable c,
const CGRect * __nullable mediaBox)
CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0); /* End the current page. */ CG_EXTERN void CGContextEndPage(CGContextRef cg_nullable c)
CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0); /** Context functions. **/ //c的引用计数+1
CG_EXTERN CGContextRef cg_nullable CGContextRetain(CGContextRef cg_nullable c)
CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0); //c的引用计数-1
CG_EXTERN void CGContextRelease(CGContextRef cg_nullable c)
CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0); //强制所有绘图操作立即渲染
CG_EXTERN void CGContextFlush(CGContextRef cg_nullable c)
CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0); //同步内容
CG_EXTERN void CGContextSynchronize(CGContextRef cg_nullable c)
CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0); /** Antialiasing functions. **/
//字体平滑,反锯齿,和次像素渲染
//设置c是否抗锯齿
CG_EXTERN void CGContextSetShouldAntialias(CGContextRef cg_nullable c,
bool shouldAntialias)
CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0); //设置c是否允许抗锯齿
CG_EXTERN void CGContextSetAllowsAntialiasing(CGContextRef cg_nullable c,
bool allowsAntialiasing)
CG_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0); /** Font display functions. **/ //设置c是否光滑字体
CG_EXTERN void CGContextSetShouldSmoothFonts(CGContextRef cg_nullable c,
bool shouldSmoothFonts)
CG_AVAILABLE_STARTING(__MAC_10_2, __IPHONE_2_0); //设置c是否允许光滑字体
CG_EXTERN void CGContextSetAllowsFontSmoothing(CGContextRef cg_nullable c,
bool allowsFontSmoothing)
CG_AVAILABLE_STARTING(__MAC_10_2, __IPHONE_2_0); //设置c是否次像素渲染字体
CG_EXTERN void CGContextSetShouldSubpixelPositionFonts(
CGContextRef cg_nullable c, bool shouldSubpixelPositionFonts)
CG_AVAILABLE_STARTING(__MAC_10_5, __IPHONE_2_0); //设置c是否次允许像素渲染字体
CG_EXTERN void CGContextSetAllowsFontSubpixelPositioning(
CGContextRef cg_nullable c, bool allowsFontSubpixelPositioning)
CG_AVAILABLE_STARTING(__MAC_10_5, __IPHONE_2_0); //设置c是否次像素量化字体
CG_EXTERN void CGContextSetShouldSubpixelQuantizeFonts(
CGContextRef cg_nullable c, bool shouldSubpixelQuantizeFonts)
CG_AVAILABLE_STARTING(__MAC_10_5, __IPHONE_2_0); //设置c是否允许次像素量化字体
CG_EXTERN void CGContextSetAllowsFontSubpixelQuantization(
CGContextRef cg_nullable c, bool allowsFontSubpixelQuantization)
CG_AVAILABLE_STARTING(__MAC_10_5, __IPHONE_2_0); /* Transparency layer support.
在透明层中绘制需要三步:
1. 调用函数 CGContextBeginTransparencyLayer
2. 在透明层中绘制需要组合的对象
3. 调用函数 CGContextEndTransparencyLayer
*/ //开始一个透明层
CG_EXTERN void CGContextBeginTransparencyLayer(CGContextRef cg_nullable c,
CFDictionaryRef __nullable auxiliaryInfo)
CG_AVAILABLE_STARTING(__MAC_10_3, __IPHONE_2_0); //开始透明度层 知道矩形边界
CG_EXTERN void CGContextBeginTransparencyLayerWithRect(
CGContextRef cg_nullable c, CGRect rect, CFDictionaryRef __nullable auxInfo)
CG_AVAILABLE_STARTING(__MAC_10_5, __IPHONE_2_0); //结束一个透明层
CG_EXTERN void CGContextEndTransparencyLayer(CGContextRef cg_nullable c)
CG_AVAILABLE_STARTING(__MAC_10_3, __IPHONE_2_0); /** User space to device space tranformations.
用户空间和设备空间的变换
**/ //获取c的仿射变换
CG_EXTERN CGAffineTransform
CGContextGetUserSpaceToDeviceSpaceTransform(CGContextRef cg_nullable c)
CG_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0); //将point从 用户空间 变换到 设备空间
CG_EXTERN CGPoint CGContextConvertPointToDeviceSpace(CGContextRef cg_nullable c,
CGPoint point)
CG_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0); //将point从 设备空间 变换到 用户空间
CG_EXTERN CGPoint CGContextConvertPointToUserSpace(CGContextRef cg_nullable c,
CGPoint point)
CG_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0); //将size从 用户空间 变换到 设备空间
CG_EXTERN CGSize CGContextConvertSizeToDeviceSpace(CGContextRef cg_nullable c,
CGSize size)
CG_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0); //将size从 设备空间 变换到 用户空间
CG_EXTERN CGSize CGContextConvertSizeToUserSpace(CGContextRef cg_nullable c,
CGSize size)
CG_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0); //将rect从 用户空间 变换到 设备空间
CG_EXTERN CGRect CGContextConvertRectToDeviceSpace(CGContextRef cg_nullable c,
CGRect rect)
CG_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0); //将rect从 设备空间 变换到 用户空间
CG_EXTERN CGRect CGContextConvertRectToUserSpace(CGContextRef cg_nullable c,
CGRect rect)
CG_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0); /** Deprecated functions. **/ //设置c的字体和字体大小
CG_EXTERN void CGContextSelectFont(CGContextRef cg_nullable c,
const char * cg_nullable name, CGFloat size, CGTextEncoding textEncoding)
CG_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_9,
__IPHONE_2_0, __IPHONE_7_0); //由目前的文本矩阵指定的点显示一个字符数组
CG_EXTERN void CGContextShowText(CGContextRef cg_nullable c,
const char * cg_nullable string, size_t length)
CG_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_9,
__IPHONE_2_0, __IPHONE_7_0); //在指定的位置显示一个字符串
CG_EXTERN void CGContextShowTextAtPoint(CGContextRef cg_nullable c,
CGFloat x, CGFloat y, const char * cg_nullable string, size_t length)
CG_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_9,
__IPHONE_2_0, __IPHONE_7_0); //显示一个数组的字形
CG_EXTERN void CGContextShowGlyphs(CGContextRef cg_nullable c,
const CGGlyph * __nullable g, size_t count)
CG_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_9,
__IPHONE_2_0, __IPHONE_7_0); //在指定位置显示一个数组的字形
CG_EXTERN void CGContextShowGlyphsAtPoint(CGContextRef cg_nullable c, CGFloat x,
CGFloat y, const CGGlyph * __nullable glyphs, size_t count)
CG_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_9,
__IPHONE_2_0, __IPHONE_7_0); //绘制具有不同偏移量的一个数组
CG_EXTERN void CGContextShowGlyphsWithAdvances(CGContextRef cg_nullable c,
const CGGlyph * __nullable glyphs, const CGSize * __nullable advances,
size_t count)
CG_AVAILABLE_BUT_DEPRECATED(__MAC_10_3, __MAC_10_9,
__IPHONE_2_0, __IPHONE_7_0); //使用CGPDFDocumentRef绘制PDF
CG_EXTERN void CGContextDrawPDFDocument(CGContextRef cg_nullable c, CGRect rect,
CGPDFDocumentRef cg_nullable document, int page)
CG_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_5,
__IPHONE_NA, __IPHONE_NA); CF_ASSUME_NONNULL_END CF_IMPLICIT_BRIDGING_DISABLED #endif /* CGCONTEXT_H_ */

iOS之CGcontext.h方法和属性简介的更多相关文章

  1. iOS之UIGraphics.h方法简介

    // // UIGraphics.h // UIKit // // Copyright (c) 2005-2017 Apple Inc. All rights reserved. // #import ...

  2. iOS之SceneKit.h文件简介

    1.SceneKit简介 SceneKit(SK)是WWDC12推出的OS X平台的Cocos 3D渲染引擎框架.支持粒子效果,物理模拟,脚本事件,多程渲染,支持iOS平台.SceneKit整合了Co ...

  3. iOS对UIViewController生命周期和属性方法的解析

    目录[-] iOS对UIViewController生命周期和属性方法的解析 一.引言 二.UIViewController的生命周期 三.从storyBoard加载UIViewController实 ...

  4. 【iOS开发】iOS对UIViewController生命周期和属性方法的解析

    iOS对UIViewController生命周期和属性方法的解析 一.引言 作为MVC设计模式中的C,Controller一直扮演着项目开发中最重要的角色,它是视图和数据的桥梁,通过它的管理,将数据有 ...

  5. ios jquery css('left')无法读取属性解决的方法

    ios jquery css('left')无法读取属性解决的方法 <pre>$(this).position().left因为display:none状态下是读取不了 $(this).o ...

  6. iOS之CAGradientLayer属性简介和使用

    1.CAGradientLayer简介 CAGradientLayer用于制作背景图层的颜色渐变,也就是颜色梯度!相关属性简介: #import <QuartzCore/CALayer.h> ...

  7. iOS-提高iOS开发效率的方法和工具

    提高iOS开发效率的方法和工具 介绍 这篇文章主要是介绍一下我在iOS开发中使用到的一些可以提升开发效率的方法和工具. IDE 首先要说的肯定是IDE了,说到IDE,Xcode不能跑,当然你也可能同时 ...

  8. HTML5 Audio and Video 的新属性简介

    前言:HTML5 中 Audio and Video的使用方法比较简单,但就是比较复杂,方法属性多.如果不常用的几乎难以记住,甚至有些人难以区分不同属性和方法的作用,更别说应用了.以下对Audio a ...

  9. IOS开发UI篇—导航控制器属性和基本使用

    IOS开发UI篇—导航控制器属性和基本使用 一.导航控制器的一些属性和基本使用 1.把子控制器添加到导航控制器中的四种方法 (1) 1.创建一个导航控制器 UINavigationController ...

随机推荐

  1. Game of Taking Stones && POJ1259 /// 最大空凸包 几何+DP

    题目大意: 给定n个点 求出这n个点中最大空凸包的面积 只放个模板 一份模板过两题(滑稽 这个讲解够详细了 https://blog.csdn.net/nyroro/article/details/4 ...

  2. 21-5-split

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. css布局-瀑布流的实现

    一.基本思路 1.先看最终的效果图: 2.实现原理:通过position:absolute(绝对定位)来定位每一个元素的位置,并且将当前列的高度记录下来方便下一个dom位置的计算 二.代码实现 1.版 ...

  4. Leetcode973. K Closest Points to Origin最接近原点的K个点

    我们有一个由平面上的点组成的列表 points.需要从中找出 K 个距离原点 (0, 0) 最近的点. (这里,平面上两点之间的距离是欧几里德距离.) 你可以按任何顺序返回答案.除了点坐标的顺序之外, ...

  5. 深度探索C++对象模型之第一章:关于对象之对象的差异

    一.三种程序设计范式: C++程序设计模型支持三种程序设计范式(programming paradiams). 程序模型(procedural model) char boy[] = "cc ...

  6. 关于soapui如何做安全测试

    1.首先安装soapui5.1.2 第一步:运行SoapUI-Pro-x32-5.1.2_576024.exe文件,按照步骤安装成功: 第二步:拷贝Protection-4.6.jar到soapui安 ...

  7. 概率dp——cf148D

    求概率应该dp数组应该顺着求 这是由初始状态来决定递推方向的 /* 盒子里有两种颜色的球,一种是黑色另一种是白色 AB轮流去球,A先取 A每次随机摸一个球 B每次随机摸一个球,然后盒子里再丢一个球 先 ...

  8. 暑假集训test-8-14~8-15

    我不想写博客辣. 拖了三天的一起写,结果就是写不下去了...果然应该改一道写一道么.. 题面题解代码也懒得往博客上放了,屯U盘里了... 因为太菜还有两道没有改. 题解外的一些参考: lyc大佬的进程 ...

  9. 在MsSql中,创建链接服务器

    建立链接服务器,主要为了跨服务器数据库操作 创建链接服务器 --创建远程链接服务器 EXEC sys.sp_addlinkedserver @server = 'SyncServer', -- 目标服 ...

  10. 谈谈域名DNS的缓存问题

    可以从很多地方看到,许多刚开始做站的朋友,对域名设置方面的知识原理一知半解,以至于为了某些测试需要,经常对域名解析大动干戈.今天改个A记录,明天又换个NS.又或者,在迁移域名,迁移网站的时候的时候由于 ...