在我們剛剛接觸Quertz 2D的時候,很重要的一點是:繪圖是在圖形的上下文進行的。每一個視圖都有關聯的上下文。
所以如果在某個視圖中繪圖,我們要檢索當前的上下文
CGContextRef ctx =
UIGraphicsGetCurrentContext();
//檢索當前上下文,繪圖的每一個視圖都有相關聯的上下文,之後將此上下文傳遞給core graphics繪圖函數來繪製
CGContextSetLineWidth(ctx, 3.0); //設定直線的像素為2;
CGContextSetStrokeColorWithColor(ctx, [UIColor greenColor].CGColor); //指定筆畫顏色為綠色;
需要注意的是在繪圖操作中有兩種不同的顏色設定:
筆畫顏色用於繪製直線或者說形狀的輪廓(圓形方形等)
填充顏色用於填充形狀(裡面)
CGContextMoveToPoint(ctx, 0.0f, 0.0f); //直線的起點
CGContextAddLineToPoint(ctx,
100, 100); //直線終點,調用這個函數的時候是將這個不可見的筆畫移動到新的位置,但是並沒有繪製任何內容。
CGContextStrokePath(ctx); //這個函數繪製直線。
- CGContextSetRGBFillColor /CGContextSetFillColorWithColor //填充顏色
- CGContextSetRGBStrokeColor /CGContextSetStrokeColorWithColor //筆畫顏色
- CGContextSetLineWidth //線寬度
繪圖的另一個重要屬性是:顏色
在平常的開發應用中,我們設定顏色一般都用UIColor,但是在Quertz 2D中我們不能直接調用UIColor對象,但是UIColor中包含了CGColor屬性
@property(nonatomic,
readonly) CGColorRef CGColor; 所以我們在設定顏色的時候可以運用[UIColor blueColor].CGColor
上面簡單介紹了繪製線以及CGColor,但是如果需要我們用Core Graphics操作CGImage怎麼辦呢。這個時候我們需要指定一個CGPoint來確定圖片的左上方或者指定一個CGRect來框住映像,並很據需要調整映像的大小時期適合該框
CGPoint drawPoint = CGPointMake(100.0f, 11.0f);
[image drawAtPoint:drawPoint];
繪製形狀:
繪製橢圓形: CGRect rect = CGRectMake(0, 0, 100, 100);
CGContextAddEllipseInRect(ctx, rect);
CGContextDrawPath(ctx,
kCGPathFillStroke);
CGContextAddRect(CGContextRef c,
CGRect rect)
CGContextAddRects(CGContextRef c,
const CGRect rects[],size_t count];
CGContextAddLines(CGContextRef c,
const CGPoint points[],size_t count];
CGContextAddEllipseInRect(CGContextRef context,
CGRect rect)
CGContextAddArc
CGContextAddArcToPoint
CGContextAddPath(CGContextRef context,
CGPathRef path)