quartz2D繪製簡單的幾何圖形

                                    第一部分  quartz2D繪圖基礎簡介:CGContextRef函數

一  quartz2D常常用來繪圖,它的核心API是CGContextRefspa

二  CGContextRef的獲取3d

1. 建立位圖時獲取咱們所需CGContextRef(常稱爲繪圖上下文)orm

在建立位圖時,須要獲取CGContextRef,那麼程序須要先調用UIGraphicsBeginImageContext()來建立內存中的圖片,而後利用該函數獲取CGContextRef。具體操做以下:圖片

UIGraphicsBeginImageContext(CGSizeMake(375,568));內存

CGContextRef ctx=UIGraphicsGetCurrentContext();it

2.UIVIew獲取當前上下文的方式io

重寫UIView的drawRect的方法,每當裏面的內容有更新時,或者顯示時,都會調用這個方法。在調用這個方法以前,系統會自動配置繪圖環境,所以,只須要經過下面的方法獲取便可import

CGContextRef ctx=UIGraphicsGetCurrentContext();基礎


                                    第二部分 繪圖相關的函數簡介


    /**

     *繪圖上下文的獲取

     */

    CGContextRef ctx=UIGraphicsGetCurrentContext();

    /**

     *設置繪製直線時直線的寬度

     */

    CGContextSetLineWidth(ctx, 2);

    /**

     *使用指定的顏色來設置 CGContextRef 的線條的顏色

     */

    CGContextSetStrokeColorWithColor(ctx, [UIColor redColor].CGColor);

    /**

     *使用指定的顏色來設置 CGContextRef 的填充顏色

     */

    CGContextSetFillColorWithColor(ctx, [UIColor redColor].CGColor);

     /**

      *使用灰色來設置CGContextRef 的填充顏色,而且能夠設置透明度

      */

    CGContextSetGrayFillColor(<#CGContextRef context#>, <#CGFloat gray#>, <#CGFloat alpha#>);

    /**

     *使用灰色來設置CGContextRef 的線條顏色,而且能夠設置透明度

     */

    CGContextSetGrayStrokeColor(<#CGContextRef context#>, <#CGFloat gray#>, <#CGFloat alpha#>);

    /**

     *使用RGB顏色模式來設置CGContextRef 的填充顏色

     */

    CGContextSetRGBFillColor(<#CGContextRef context#>, <#CGFloat red#>, <#CGFloat green#>, <#CGFloat blue#>, <#CGFloat alpha#>);

    /**

     *使用RGB顏色模式來設置CGContextRef 的線條顏色

     */

    CGContextSetRGBStrokeColor(<#CGContextRef context#>, <#CGFloat red#>, <#CGFloat green#>, <#CGFloat blue#>, <#CGFloat alpha#>);

    /**

     *設置陰影在XY方向上的偏移,以及模糊度(blur值越大,陰影越模糊),該函數沒有設置陰影顏色,默認使用1/3透明黑色

     */

    CGContextSetShadow(<#CGContextRef context#>, <#CGSize offset#>, <#CGFloat blur#>)

    /**

     *設置陰影在X,Y方向上的偏移,模糊度,和陰影的顏色

     */

    CGContextSetShadowWithColor(<#CGContextRef context#>, <#CGSize offset#>, <#CGFloat blur#>, <#CGColorRef color#>)


                                       第三部分 代碼部分

#import "MyView.h"


@implementation MyView



- (void)drawRect:(CGRect)rect {

    [self drawLine];

    [self drawRect];

    [self drawArc];

    [self drawQLine];

}

/**

 *繪製一條直線

 */

-(void)drawLine{

    //1---獲取繪圖上下文

    CGContextRef ctx=UIGraphicsGetCurrentContext();

    //2---使用指定顏色來設置該上下文的線條顏色

    CGContextSetStrokeColorWithColor(ctx, [UIColor redColor].CGColor);

    //3---設置直線寬度

    CGContextSetLineWidth(ctx, 3);

    //4---設置線條的起點

    CGContextMoveToPoint(ctx, 20, 20);

    //5---設置終點

    CGContextAddLineToPoint(ctx, 220, 20);

    //6---開始繪圖

    CGContextDrawPath(ctx, kCGPathFillStroke);

}

/**

 *繪製一個矩形

 */

-(void)drawRect{

    CGContextRef ctx=UIGraphicsGetCurrentContext();

    CGContextSetStrokeColorWithColor(ctx, [UIColor greenColor].CGColor);

    CGContextSetLineWidth(ctx, 3);

    CGContextAddRect(ctx, CGRectMake(200, 50, 100, 100));

    CGContextDrawPath(ctx, kCGPathFillStroke);

}

/**

 *繪製一個圓形

 */

-(void)drawArc

{

    CGContextRef ctx=UIGraphicsGetCurrentContext();

    CGContextSetStrokeColorWithColor(ctx, [UIColor orangeColor].CGColor);

    CGContextSetLineWidth(ctx, 2);

    CGContextSetFillColorWithColor(ctx, [UIColor blueColor].CGColor);

    CGContextAddArc(ctx, 100, 100, 50, 0, 2*M_PI, 0);

    CGContextDrawPath(ctx, kCGPathFillStroke);

}

/**

 *繪製一條曲線

 */

-(void)drawQLine{

    CGContextRef ctx=UIGraphicsGetCurrentContext();

    CGContextSetStrokeColorWithColor(ctx, [UIColor orangeColor].CGColor);

    CGContextSetLineWidth(ctx, 3);

    CGContextMoveToPoint(ctx, 50, 280);

    CGContextAddCurveToPoint(ctx, 100, 100, 150, 150, 200, 180);

    CGContextDrawPath(ctx, kCGPathFillStroke);

}

運行結果:

相關文章
相關標籤/搜索