CGContextRef context = UIGraphicsGetCurrentContext();
設(shè)置上下文
CGContextMoveToPoint
開始畫線
CGContextAddLineToPoint
畫直線
CGContextAddEllipseInRect
畫一橢圓
CGContextSetLineCap
設(shè)置線條終點形狀
CGContextSetLineDash
畫虛線
CGContextAddRect
畫一方框
CGContextStrokeRect
指定矩形
CGContextStrokeRectWithWidth
指定矩形線寬度
CGContextStrokeLineSegments
一些直線
CGContextAddArc
畫已曲線 前倆店為中心 中間倆店為起始弧度 最后一數(shù)據(jù)為0則順時針畫 1則逆時針
CGContextAddArcToPoint(context,0,0, 2, 9, 40);
//先畫倆條線從point 到 弟1點 镣煮, 從弟1點到弟2點的線 切割里面的圓
CGContextSetShadowWithColor
設(shè)置陰影
CGContextSetRGBFillColor
這只填充顏色
CGContextSetRGBStrokeColor
畫筆顏色設(shè)置
CGContextSetFillColorSpace
顏色空間填充
CGConextSetStrokeColorSpace
顏色空間畫筆設(shè)置
CGContextFillRect
補充當(dāng)前填充顏色的rect
CGContextSetAlaha
透明度
CGContextTranslateCTM
改變畫布位置
CGContextSetLineWidth
設(shè)置線的寬度
CGContextAddRects
畫多個線
CGContextAddQuadCurveToPoint
畫曲線
CGContextStrokePath
開始繪制圖片
CGContextDrawPath
設(shè)置繪制模式
CGContextClosePath
封閉當(dāng)前線路
CGContextTranslateCTM(context, 0, rect.size.height); CGContextScaleCTM(context, 1.0, -1.0);
反轉(zhuǎn)畫布
CGContextSetInterpolationQuality
背景內(nèi)置顏色質(zhì)量等級
CGImageCreateWithImageInRect
從原圖片中取小圖
字符串的寫入可用 nsstring本身的畫圖方法 - (CGSize)drawInRect:(CGRect)rect withFont:(UIFont *)font lineBreakMode:(UILineBreakMode)lineBreakMode alignment:(UITextAlignment)alignment;
來寫進去即可
對圖片放大縮小的功能就是慢了點
UIGraphicsBeginImageContext(newSize); UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext();
CGColorGetComponents()
返回顏色的各個直 以及透明度 可用只讀const float 來接收 是個數(shù)組
畫圖片 CGImageRef image=CGImageRetain(img.CGImage); CGContextDrawImage(context, CGRectMake(10.0, height - 100.0, 90.0, 90.0), image);
實現(xiàn)逐變顏色填充方法
CGContextClip(context);
CGColorSpaceRef rgb = CGColorSpaceCreateDeviceRGB();
CGFloat colors[] =
{
204.0 / 255.0, 224.0 / 255.0, 244.0 / 255.0, 1.00,
29.0 / 255.0, 156.0 / 255.0, 215.0 / 255.0, 1.00,
0.0 / 255.0, 50.0 / 255.0, 126.0 / 255.0, 1.00,
};
CGGradientRef gradient = CGGradientCreateWithColorComponents
(rgb, colors, NULL, sizeof(colors)/(sizeof(colors[0])*4));
CGColorSpaceRelease(rgb);
CGContextDrawLinearGradient(context, gradient,CGPointMake
(0.0,0.0) ,CGPointMake(0.0,self.frame.size.height),
kCGGradientDrawsBeforeStartLocation);
注: 畫完圖后,必須
先用CGContextStrokePath
來描線,即形狀
后用CGContextFillPath
來填充形狀內(nèi)的顏色.
填充一個路徑的時候,路徑里面的子路徑都是獨立填充的涝焙。
假如是重疊的路徑,決定一個點是否被填充镀层,有兩種規(guī)則
1,nonzero winding number rule:非零繞數(shù)規(guī)則拌汇,假如一個點被從左到右跨過,計數(shù)器+1后众,從右到左跨過放闺,計數(shù)器-1祟昭,最后,如果結(jié)果是0怖侦,那么不填充篡悟,如果是非零,那么填充匾寝。
2,even-odd rule: 奇偶規(guī)則搬葬,假如一個點被跨過,那么+1艳悔,最后是奇數(shù)急凰,那么要被填充,偶數(shù)則不填充猜年,和方向沒有關(guān)系抡锈。
Function Description
CGContextEOFillPath
使用奇偶規(guī)則填充當(dāng)前路徑
CGContextFillPath
使用非零繞數(shù)規(guī)則填充當(dāng)前路徑
CGContextFillRect
填充指定的矩形
CGContextFillRects
填充指定的一些矩形
CGContextFillEllipseInRect
填充指定矩形中的橢圓
CGContextDrawPath
兩個參數(shù)決定填充規(guī)則,kCGPathFill表示用非零繞數(shù)規(guī)則乔外,kCGPathEOFill表示用奇偶規(guī)則床三,kCGPathFillStroke表示填充,kCGPathEOFillStroke表示描線杨幼,不是填充
設(shè)置當(dāng)一個顏色覆蓋上另外一個顏色撇簿,兩個顏色怎么混合
默認方式是
result = (alpha * foreground) + (1 - alpha) * background
CGContextSetBlendMode
:設(shè)置blend mode.
CGContextSaveGState
:保存blend mode.
CGContextRestoreGState
:在沒有保存之前,用這個函數(shù)還原blend mode.
CGContextSetBlendMode
混合倆種顏色