iOS:quartz2D繪圖(畫一些簡單的圖形,如直線、三角形、圓、矩形、文字等)

來源:互聯網
上載者:User

標籤:

前一篇幾乎已經詳細介紹了Quartz2D的所有知識,這一篇以及後面就不廢話了,主要是用具體的執行個體來示範繪圖效果。

這裡我們先來繪製一些簡單的圖形(如直線、三角形、圓、矩形、文字、映像),它有兩種方式可以繪製,一種是通過上下文繪製,另一種是通過路徑繪製。下面對繪製三角形做了一個兩種方式繪製的示範。

 

繪製基本的圖形,需要在操作的視圖類中重寫- (void)drawRect:(CGRect)rect方法,並在在該方法中繪製圖形。繪製映像既可以重寫該方法繪製,也可以不用重寫該方法,它有封裝好的方法。這裡,我採用自訂一個視圖類並將控制器的視圖關聯此自訂類的方式來繪製圖形。具體執行個體如下:

1.建立一個自訂的視圖類DemoView,關聯控制器視圖。

    

 

2.在自訂的視圖類的- (void)drawRect:(CGRect)rect方法中進行繪圖:

//所有的調用方法都寫在- (void)drawRect:(CGRect)rect

- (void)drawRect:(CGRect)rect{    //1.擷取繪圖的上下文    CGContextRef context = UIGraphicsGetCurrentContext();        //畫直線    [self drawLine:context];        //畫三角形    [self drawTriangle:context];        //畫矩形    [self drawRectangle:context];        //畫圓    [self drawCircle:context];        //路徑的使用    [self drawByPath:context];        //畫文字    [self drawString:context];        //畫映像    [self drawImage];}

 

//繪製直線

#pragma mark -畫直線(實線和虛線)

-(void)drawLine:(CGContextRef) context{    //2.添加繪圖路徑    CGContextMoveToPoint(context, 30, 40);    CGContextAddLineToPoint(context, 100, 40); //終點        //3.設定繪圖的屬性    //描邊的顏色    CGFloat redColor[4] = {1.0,0.0,0.0,1.0};    CGContextSetStrokeColor(context, redColor);        //填充的顏色    CGFloat greenColor[4] = {0.0,1.0,0.0,1.0};    CGContextSetFillColor(context, greenColor);        //線寬    CGContextSetLineWidth(context, 5);        //線的類型(虛線)    //CGFloat dash[2] = {1.0,2.0};    //CGContextSetLineDash(context, 0,dash, 2);        //4.繪圖(設定既填充有描邊)    CGContextDrawPath(context, kCGPathFillStroke);}

所畫直線和虛線為:

  

 

//繪製三角形

#pragma mark -通過上下文畫三角形(第一種方式)

-(void)drawTriangle:(CGContextRef) context{    //2.添加繪圖路徑    CGContextMoveToPoint(context, 100, 100);//起始點    CGContextAddLineToPoint(context, 150, 100); //終點    CGContextAddLineToPoint(context, 125, 150); //終點    CGContextAddLineToPoint(context, 100, 100); //終點        //3.設定繪圖的屬性    //描邊的顏色    CGFloat redColor[4] = {1.0,0.0,0.0,1.0};    CGContextSetStrokeColor(context, redColor);        //填充的顏色    CGFloat greenColor[4] = {0.0,1.0,0.0,1.0};    CGContextSetFillColor(context, greenColor);        //線寬    CGContextSetLineWidth(context, 5);            //線的連接點的類型(miter尖角、round圓角、bevel平角)    CGContextSetLineJoin(context, kCGLineJoinRound);            //4.繪圖(設定既填充有描邊)    CGContextDrawPath(context, kCGPathFillStroke);    }

所畫的三角形為:

 

//繪製矩形

#pragma mark -畫矩形

-(void)drawRectangle:(CGContextRef)context{    //添加矩形    CGContextAddRect(context, CGRectMake(250, 100, 100, 100));        //設定繪圖的屬性    //描邊的顏色    CGFloat redColor[4] = {1.0,0.0,0.0,1.0};    CGContextSetStrokeColor(context, redColor);        //填充的顏色    CGFloat greenColor[4] = {0.0,1.0,0.0,1.0};    CGContextSetFillColor(context, greenColor);        //4.繪圖    CGContextDrawPath(context, kCGPathFillStroke);}

所畫的矩形為:

 

//繪製圓

#pragma mark -畫圓(正圓、橢圓)

-(void)drawCircle:(CGContextRef) context{    //圓    CGContextAddEllipseInRect(context, CGRectMake(200, 300, 100, 100));        //橢圓    CGContextAddEllipseInRect(context, CGRectMake(60, 300, 100, 150));            //設定繪圖的屬性    //描邊的顏色    CGFloat redColor[4] = {1.0,0.0,0.0,1.0};    CGContextSetStrokeColor(context, redColor);        //填充的顏色    CGFloat greenColor[4] = {0.0,1.0,0.0,1.0};    CGContextSetFillColor(context, greenColor);        //4.繪圖    CGContextDrawPath(context, kCGPathFillStroke);}

所畫的正圓和橢圓為:

 

 

通過路徑畫三角形(第二種畫圖方式)

#pragma mark -通過路徑畫三角形

-(void)drawByPath:(CGContextRef)context{    //建立路徑    CGMutablePathRef path = CGPathCreateMutable();        //往路徑中添加映像    CGPathMoveToPoint(path, NULL, 100, 100);    CGPathAddLineToPoint(path, NULL, 200, 100);    CGPathAddLineToPoint(path, NULL, 150, 200);        //設定繪圖的屬性    [[UIColor redColor]setStroke];//描邊    [[UIColor greenColor]setFill];//填充    //[[UIColor purpleColor]set];   //既描邊又填充        //將路徑添加到上下文中    CGContextAddPath(context, path);        //閉合路徑    CGContextClosePath(context);        //繪圖    CGContextDrawPath(context, kCGPathFillStroke);        //清理    CGPathRelease(path);}

所畫三角形為:

 

//繪製文字

#pragma mark -畫文字(不換行、換行)

-(void)drawString:(CGContextRef)context{    NSString *str = @"hello world";        //以點開始畫不換行    [str drawAtPoint:CGPointMake(100, 60) withAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:18],NSForegroundColorAttributeName:[UIColor blueColor]}];            //在矩形中畫,超出就換行    [str drawWithRect:CGRectMake(100, 230, 50, 100) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:18],NSForegroundColorAttributeName:[UIColor blueColor]} context:nil];}

不換行和換行的文字為:

 

 

//繪製映像

#pragma mark -畫映像(將原圖繪製、將原圖按照矩形地區大小繪製、帶花邊繪製)

-(void)drawImage{    UIImage *imageName = [UIImage imageNamed:@"1.png"];            //原始映像大小    [imageName drawAtPoint:CGPointMake(250, 430)];        //改變映像大小    [imageName drawInRect:CGRectMake(250, 500, 100, 100)];        //花紋樣式畫映像    [imageName drawAsPatternInRect:CGRectMake(100, 500, 100, 100)];}

三種繪製的映像為:

   

 

iOS:quartz2D繪圖(畫一些簡單的圖形,如直線、三角形、圓、矩形、文字等)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.