quartz2D绘制简单的几何图形

                                    第一部分  quartz2D绘图基础简介:CGContextRef

一  quartz2D经常用来绘图,它的核心API是CGContextRef

二  CGContextRef的获取

1. 创建位图时获取我们所需CGContextRef(常称为绘图上下文)

在创建位图时,需要获取CGContextRef,那么程序需要先调用UIGraphicsBeginImageContext()来创建内存中的图片,然后利用该函数获取CGContextRef。具体操作如下:

UIGraphicsBeginImageContext(CGSizeMake(375,568));

CGContextRef ctx=UIGraphicsGetCurrentContext();

2.UIVIew获取当前上下文的方式

重写UIView的drawRect的方法,每当里面的内容有更新时,或者显示时,都会调用这个方法。在调用这个方法之前,系统会自动配置绘图环境,因此,只需要通过下面的方法获取即可

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);

}

运行结果:

quartz2D绘制简单的几何图形



                                          

你可能感兴趣的:(quartz2D绘制简单的几何图形)