一、繪圖路徑
- //1.獲取圖形上下文
- CGContextRef ctx=UIGraphicsGetCurrentContext();
- //2.繪圖(畫線)
- //設置起點
- CGContextMoveToPoint(ctx, 20, 20);
- //設置終點
- CGContextAddLineToPoint(ctx, 200, 300);
- //渲染
- CGContextStrokePath(ctx);
上面的代碼和下面的代碼是等價的。
- //1.獲取圖形上下文
- CGContextRef ctx=UIGraphicsGetCurrentContext();
- //2.繪圖
- //2.1創建一條直線繪圖的路徑
- //注意:但凡通過Quartz2D中帶有creat/copy/retain方法創建出來的值都必須要釋放
- CGMutablePathRef path=CGPathCreateMutable();
- //2.2把繪圖信息添加到路徑裏
- CGPathMoveToPoint(path, NULL, 20, 20);
- CGPathAddLineToPoint(path, NULL, 200, 300);
- //2.3把路徑添加到上下文中
- //把繪製直線的繪圖信息保存到圖形上下文中
- CGContextAddPath(ctx, path);
- //3.渲染
- CGContextStrokePath(ctx);
- //4.釋放前面創建的兩條路徑
- //第一種方法
- CGPathRelease(path);
- //第二種方法
- // CFRelease(path);
- - (void)drawRect:(CGRect)rect
- {
- //1.獲取圖形上下文
- CGContextRef ctx=UIGraphicsGetCurrentContext();
- //2.繪圖
- //2.a 畫一條直線
- //2.a.1創建一條繪圖的路徑
- //注意:但凡通過Quartz2D中帶有creat/copy/retain方法創建出來的值都必須要釋放
- CGMutablePathRef path=CGPathCreateMutable();
- //2.a.2把繪圖信息添加到路徑裏
- CGPathMoveToPoint(path, NULL, 20, 20);
- CGPathAddLineToPoint(path, NULL, 200, 300);
- //2.a.3把路徑添加到上下文中
- //把繪製直線的繪圖信息保存到圖形上下文中
- CGContextAddPath(ctx, path);
- //2.b畫一個圓
- //2.b.1創建一條畫圓的繪圖路徑(注意這裏是可變的,不是CGPathRef)
- CGMutablePathRef path1=CGPathCreateMutable();
- //2.b.2把圓的繪圖信息添加到路徑裏
- CGPathAddEllipseInRect(path1, NULL, CGRectMake(50, 50, 100, 100));
- //2.b.3把圓的路徑添加到圖形上下文中
- CGContextAddPath(ctx, path1);
- //3.渲染
- CGContextStrokePath(ctx);
- //4.釋放前面創建的兩條路徑
- //第一種方法
- CGPathRelease(path);
- CGPathRelease(path1);
- //第二種方法
- // CFRelease(path);
- }
- #import "YYview.h"
- @implementation YYview
- - (void)drawRect:(CGRect)rect
- {
- //獲取圖形上下文
- CGContextRef ctx=UIGraphicsGetCurrentContext();
- //第一種畫法,通過連接固定的點繪製四邊形
- // CGContextMoveToPoint(ctx, 0, 20);
- // CGContextAddLineToPoint(<#CGContextRef c#>, <#CGFloat x#>, <#CGFloat y#>);
- // CGContextAddLineToPoint(<#CGContextRef c#>, <#CGFloat x#>, <#CGFloat y#>);
- // CGContextAddLineToPoint(<#CGContextRef c#>, <#CGFloat x#>, <#CGFloat y#>);
- //第二種方式:指定起點和寬高繪製四邊形
- // CGContextAddRect(ctx, CGRectMake(20, 20, 200, 100));
- // //渲染
- // CGContextStrokePath(ctx);
- //第三種方式:二種的兩步合併成一步。
- //畫空心的四邊形
- // CGContextStrokeRect(ctx, CGRectMake(20, 20, 200, 100));
- // //畫實心的四邊形
- // CGContextFillRect(ctx, CGRectMake(20, 20, 200, 100));
- //第四種方式(oc的方法):繪製實心的四邊形,注意沒有空心的方法
- UIRectFill(CGRectMake(20, 20, 200, 100));
- //第五種方式:畫根線,設置線條的寬度(通過這種方式可以畫斜的四邊形)
- // CGContextMoveToPoint(ctx, 20, 20);
- // CGContextAddLineToPoint(ctx, 100, 200);
- // CGContextSetLineWidth(ctx, 50);
- // //注意,線條只能畫成是空心的
- // CGContextStrokePath(ctx);
- }
- @end