標籤:style blog http color io os strong sp div
通過CoreGraphic繪製映像一般有以下幾個步驟:
1:擷取圖形內容物件
繪製映像首先需要取得圖形內容物件(CGContextRef),系統中維護一個CGContextRef的棧,在UI控制項的drawRect方法調用前,系統會為當前繪圖環境建立一個圖形內容物件並且置於CGContextRef棧頂,通過UIGraphicsGetCurrentContext()可以取得這個映像內容物件。
2:設定繪畫的屬性,可以配置線條顏色,填充顏色,線條寬度,陰影,線段端點形狀,點線模式,線條連接點風格,疊加模式等屬性
3:通過API繪製映像
- (void)drawRect:(CGRect)rect{ //擷取映像內容物件 CGContextRef context = UIGraphicsGetCurrentContext(); //設定線段寬度 CGContextSetLineWidth(context, 2); //通過RGB模式設定線條顏色,最後一個參數代表透明度 CGContextSetRGBStrokeColor(context, 250/255.0, 250/255.0, 250/255.0, 1); //設定填充顏色 CGContextSetFillColorWithColor(context, [UIColor greenColor].CGColor); //設定陰影,第二個參數是陰影在x軸以及y軸的位移量,第三個參數設定陰影的模糊程度,0表示不模糊,陰影預設顏色為黑色,透明度0.3 CGContextSetShadow(context, CGSizeMake(3, 3), 5); //設定線段端點形狀,第二個參數是個枚舉類型,包含3個選項 CGContextSetLineCap(context, kCGLineCapRound); //設定線條串連風格 CGContextSetLineJoin(context, kCGLineJoinRound); //繪製線段,points是點數組,兩個點確定一條線,下面的數組有8個點,可以確定4條線段 const CGPoint points[] = {CGPointMake(10, 30),CGPointMake(100, 30),CGPointMake(100, 30),CGPointMake(100, 100),CGPointMake(100, 100),CGPointMake(10, 100),CGPointMake(10, 100),CGPointMake(10, 30)}; //繪製 CGContextStrokeLineSegments(context, points, 8); //填充矩形 CGContextFillRect(context, CGRectMake(120, 30, 80, 50)); //繪製矩形 CGContextStrokeRect(context, CGRectMake(120, 100, 80, 50)); //繪製橢圓 CGContextStrokeEllipseInRect(context, CGRectMake(220, 30, 80, 50)); //繪製虛線 //繪製虛線需要設定點線模式 CGFloat pattern[] = {5,5}; CGContextSetLineDash(context, 1, pattern, 2); const CGPoint points2[] = {CGPointMake(100, 190),CGPointMake(220, 190)}; CGContextStrokeLineSegments(context, points2, 2);}
運行結果
上面的代碼中設定點線模式時用到了CGContextSetLineDash這個函數,函數有4個參數,第一個參數表示映像內容物件,第二個參數配合第三個參數用來指定第一個點線的長度,第三個參數是一個浮點數組,最後一個參數是第三個參數中數組的長度。
我們傳的數組是{5,5}表示點線長5,間隔5,如果數組為{2,3,4}表示點線長2,間隔3,點線長4,間隔2,點線長3,間隔4這樣依次下去。
數組第一個數字減去函數的第2個參數表示第一個點線的長度,比如上例中數組第一個數字是5,參數第2個數字是1,所以第一個點線長為4。
IOS影像處理(1)繪製簡單的幾何圖形