CGContextMoveToPoint 开始画线
CGContextAddLineToPoint 画直线
CGContextAddEllipseInRec
CGContextSetLineCap 设置线条终点形状
CGContextSetLineDash 画虚线
CGContextAddRect 画一方框
CGContextStrokeRect 指定矩形
CGContextStrokeRectWithW
CGContextStrokeLineSegme
CGContextAddArc 画已曲线 前俩店为中心 中间俩店为起始弧度 最后一数据为0则顺时针画 1则逆时针
CGContextAddArcToPoint(context,0,0, 2, 9, 40);//先画俩条线从point 到 弟1点, 从弟1点到弟2点的线
CGContextSetShadowWithCo
CGContextSetRGBFillColor
CGContextSetRGBStrokeCol
CGContextSetFillColorSpa
CGConextSetStrokeColorSp
CGContextFillRect 补充当前填充颜色的rect
CGContextSetAlaha 透明度
CGContextTranslateCTM 改变画布位置
CGContextSetLineWidth 设置线的宽度
CGContextAddRects 画多个线
CGContextAddQuadCurveToP
CGContextDrawPath 设置绘制模式
CGContextClosePath 封闭当前线路
CGContextTranslateCTM(context, 0,rect.size.height);
CGContextSetInterpolatio
CGImageCreateWithImageIn
字符串的写入可用
对图片放大缩小的功能就是慢了点
CGColorGetComponents() 返回颜色的各个直 以及透明度 可用只读const float来接收
画图片 CGImageRef image=CGImageRetain(img.CGImage);
实现逐变颜色填充方法 CGContextClip(context);
注:
填充一个路径的时候,路径里面的子路径都是独立填充的。
假如是重叠的路径,决定一个点是否被填充,有两种规则
1,nonzero winding numberrule:非零绕数规则,假如一个点被从左到右跨过,计数器+1,从右到左跨过,计数器-1,最后,如果结果是0,那么不填充,如果是非零,那么填充。
2,even-odd rule:奇偶规则,假如一个点被跨过,那么+1,最后是奇数,那么要被填充,偶数则不填充,和方向没有关系。
Description
设置当一个颜色覆盖上另外一个颜色,两个颜色怎么混合
默认方式是
result = (alpha * foreground) + (1 - alpha) * background
CGContextSetBlendMode :设置blend mode.
CGContextSaveGState :保存blend mode.
CGContextRestoreGState:在没有保存之前,用这个函数还原blend mode.
CGContextSetBlendMode 混合俩种颜色
http://www.cocoachina.com/bbs/read.php?tid=75122&page=1
================================================================
虚线
画虚线需要用到函数:
CGContextSetLineDash
此函数需要四个参数:
- context
– 这个不用多说 - phase
- 稍后再说 - lengths
– 指明虚线是如何交替绘制,具体看例子 - count
– lengths数组的长度
- CGContextRef
context =UIGraphicsGetCurrentCont ext(); - CGContextBeginPath(context);
- CGContextSetLineWidth(context,
2.0); - CGContextSetStrokeColorW
ithColor(context, [UIColorwhiteColor].CGColor); - float
lengths[] = {10,10}; - CGContextSetLineDash(context,
0, lengths,2); - CGContextMoveToPoint(context,
10.0, 20.0); - CGContextAddLineToPoint(context,
310.0,20.0); - CGContextStrokePath(context);
- CGContextClosePath(context);
lengths的值{10,10}表示先绘制10个点,再跳过10个点,如此反复,如图:
如果把lengths值改为{10, 20,10},则表示先绘制10个点,跳过20个点,绘制10个点,跳过10个点,再绘制20个点,如此反复,如图:
注意count的值等于lengths数组的长度
phase参数表示在第一个虚线绘制的时候跳过多少个点,举例说明:
- float
lengths[] = {10,5}; - CGContextSetLineDash(context,
0, lengths, 2); - CGContextMoveToPoint(context,
0.0, 20.0); - CGContextAddLineToPoint(context,
310.0, 20.0); - CGContextStrokePath(context);
-
- CGContextSetLineDash(context,
5, lengths, 2); - CGContextMoveToPoint(context,
0.0, 40.0); - CGContextAddLineToPoint(context,
310.0, 40.0); - CGContextStrokePath(context);
-
- CGContextSetLineDash(context,
8, lengths, 2); - CGContextMoveToPoint(context,
0.0, 60.0); - CGContextAddLineToPoint(context,
310.0, 60.); - CGContextStrokePath(context);
由于lengths值为{10,5},第一条线就是绘制10,跳过5,反复绘制。
第二条线的phase值为5,则首先绘制【10减去5】,再跳过5,绘制10,反复绘制。
第三条给也如此,先绘制2,再跳过5,如此反复。
CGContextSetStrokeColorW
CGContextSetLineDash (myContext,phase,lengths,2);
CGContextClosePath(myContext);
CGContextStrokePath(myContext);
================================================================
切线
- (void)drawRect:(CGRect)rect {
}
================================================================
- (void)drawRect:(CGRect)rect {
}
================================================================
- (void)drawRect:(CGRect)rect {
}
================================================================
- (void)drawRect:(CGRect)rect {
}
================================================================
- (void)drawRect:(CGRect)rect {
}