亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > iOS > 正文

iOS開發中Quartz2D的基本使用方式舉例

2020-07-26 03:31:44
字體:
來源:轉載
供稿:網友

一、畫直線

代碼:

復制代碼 代碼如下:

//
//  YYlineview.m
//  03-畫直線
//
//  Created by apple on 14-6-9.
//  Copyright (c) 2014年 itcase. All rights reserved.
//

#import "YYlineview.h"

@implementation YYlineview


// 當自定義view第一次顯示出來的時候就會調用drawRect方法
- (void)drawRect:(CGRect)rect
{

    // 1.取得和當前視圖相關聯的圖形上下文(因為圖形上下文決定繪制的輸出目標)/
    // 如果是在drawRect方法中調用UIGraphicsGetCurrentContext方法獲取出來的就是Layer的上下文
    CGContextRef  ctx=UIGraphicsGetCurrentContext();//不需要*,同id
   
    // 2.繪圖(繪制直線), 保存繪圖信息
    // 設置起點
    CGContextMoveToPoint(ctx, 20, 100);
    //設置終點
    CGContextAddLineToPoint(ctx, 300, 100);
   
   
    //設置繪圖的狀態
    //設置線條的顏色為藍色
    CGContextSetRGBStrokeColor(ctx, 0, 1.0, 0, 1.0);
    //設置線條的寬度
    CGContextSetLineWidth(ctx, 15);
    //設置線條起點和終點的樣式為圓角
    CGContextSetLineCap(ctx, kCGLineCapRound);
    //設置線條的轉角的樣式為圓角
    CGContextSetLineJoin(ctx, kCGLineJoinRound);
    //3.渲染(繪制出一條空心的線)
    CGContextStrokePath(ctx);
   
//    //注意線條不能渲染為實心的
//    CGContextFillPath(ctx);
   
   
   
    //設置第二條線
    //設置第二條線的起點
    CGContextMoveToPoint(ctx, 50, 200);
    //設置第二天線的終點(自動把上一條直線的終點當做起點)
    CGContextAddLineToPoint(ctx, 300, 60);
   
    //設置繪圖的狀態
//    CGContextSetRGBStrokeColor(ctx, 1.0, 0.7, 0.3, 1.0);
    //第二種設置顏色的方式
    [[UIColor grayColor] set];
    //設置線條的寬度
    CGContextSetLineWidth(ctx, 10);
    //設置線條的起點和終點的樣式
    CGContextSetLineCap(ctx, kCGLineCapButt);
   
    //渲染第二條線的圖形到view上
    //繪制一條空心的線
    CGContextStrokePath(ctx);
}


@end


效果:

2015112492838729.png (322×283)

二、畫三角形

代碼:

復制代碼 代碼如下:

//
//  YYrectview.m
//  02-畫三角形
//
//  Created by 孔醫己 on 14-6-10.
//  Copyright (c) 2014年 itcast. All rights reserved.
//

#import "YYrectview.h"

@implementation YYrectview


- (void)drawRect:(CGRect)rect
{
    //1.獲得圖形上下文
    CGContextRef ctx=UIGraphicsGetCurrentContext();
   
    //2.繪制三角形
    //設置起點
    CGContextMoveToPoint(ctx, 20, 100);
    //設置第二個點
    CGContextAddLineToPoint(ctx, 40, 300);
    //設置第三個點
    CGContextAddLineToPoint(ctx, 200, 200);
    //設置終點
//     CGContextAddLineToPoint(ctx, 20, 100);
    //關閉起點和終點
    CGContextClosePath(ctx);
   
    // 3.渲染圖形到layer上
    CGContextStrokePath(ctx);
   
}


@end


效果:

2015112492918030.png (282×347)

提示:關閉起點和終點  CGContextClosePath(ctx);

三、畫四邊形

代碼:

復制代碼 代碼如下:

//
//  YYrect.m
//  03-畫四邊形
//
//  Created by 孔醫己 on 14-6-10.
//  Copyright (c) 2014年 itcast. All rights reserved.
//

#import "YYrect.h"

@implementation YYrect


- (void)drawRect:(CGRect)rect
{

    //1.獲取圖形上下文
    CGContextRef ctx=UIGraphicsGetCurrentContext();
    //2.畫四邊形
    CGContextAddRect(ctx, CGRectMake(20, 20, 150, 100));
   
    // 如果要設置繪圖的狀態必須在渲染之前
    //    CGContextSetRGBStrokeColor(ctx, 1.0, 0, 0, 1.0);
    // 繪制什么類型的圖形(空心或者實心).就要通過什么類型的方法設置狀態
    //    CGContextSetRGBFillColor(ctx, 1.0, 0, 0, 1.0);
   
    // 調用OC的方法設置繪圖的顏色
    //    [[UIColor purpleColor] setFill];
    //    [[UIColor blueColor] setStroke];
    // 調用OC的方法設置繪圖顏色(同時設置了實心和空心)
    //    [[UIColor greenColor] set];
    [[UIColor colorWithRed:1.0 green:0 blue:0 alpha:1.0] set];
   
   
    //3.渲染圖形到layer上
    //空心的
    CGContextStrokePath(ctx);
    //實心的
//    CGContextFillPath(ctx);
   
}


@end


提示:如果要設置繪圖的狀態必須在渲染之前。

效果(實心和空心):

2015112493300257.png (318×250)2015112493318692.png (323×181)

四、畫圓

代碼1:

復制代碼 代碼如下:

- (void)drawRect:(CGRect)rect
{

    // 1.獲取上下文
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    // 畫圓
    CGContextAddArc(ctx, 100, 100, 50, 0, 2 * M_PI, 0);

    // 3.渲染 (注意, 畫線只能通過空心來畫)
//    CGContextFillPath(ctx);
    CGContextStrokePath(ctx);
   
}


效果:

2015112493344375.png (304×245)

代碼2:

復制代碼 代碼如下:

// 畫圓
    // 1.獲取上下文
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    // 2.畫圓
    CGContextAddEllipseInRect(ctx, CGRectMake(50, 100, 50, 50));
   
    [[UIColor greenColor] set];
   
    // 3.渲染
    //    CGContextStrokePath(ctx);
    CGContextFillPath(ctx);

效果:

2015112493434968.png (259×211)

代碼3:

復制代碼 代碼如下:

// 畫橢圓
    // 1.獲取上下文
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    // 2.畫圓
    CGContextAddEllipseInRect(ctx, CGRectMake(50, 100, 100, 230));
   
    [[UIColor purpleColor] set];
   
    // 3.渲染
    //    CGContextStrokePath(ctx);
    CGContextFillPath(ctx);

效果:

2015112493455286.png (237×388)

五、畫圓弧

代碼1:

復制代碼 代碼如下:

// 畫圓弧
    // 1.獲取上下文
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    // 2.畫圓弧
    // x/y 圓心
    // radius 半徑
    // startAngle 開始的弧度
    // endAngle 結束的弧度
    // clockwise 畫圓弧的方向 (0 順時針, 1 逆時針)
    //    CGContextAddArc(ctx, 100, 100, 50, -M_PI_2, M_PI_2, 0);
    CGContextAddArc(ctx, 100, 100, 50, M_PI_2, M_PI, 0);
    CGContextClosePath(ctx);
   
    // 3.渲染
    //     CGContextStrokePath(ctx);
    CGContextFillPath(ctx);

效果:

2015112493512249.png (280×264)

代碼2:

復制代碼 代碼如下:

// 1.獲取上下文
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    // 2.畫餅狀圖
    // 畫線
    CGContextMoveToPoint(ctx, 100, 100);
    CGContextAddLineToPoint(ctx, 100, 150);
    // 畫圓弧
    CGContextAddArc(ctx, 100, 100, 50, M_PI_2, M_PI, 0);
    //    CGContextAddArc(ctx, 100, 100, 50, -M_PI, M_PI_2, 1);
   
    // 關閉路徑
    CGContextClosePath(ctx);
    [[UIColor brownColor]set];
   
   
    // 3.渲染 (注意, 畫線只能通過空心來畫)
    CGContextFillPath(ctx);
    //    CGContextStrokePath(ctx);

效果:

2015112493532663.png (263×247)

六、畫文字
代碼:

復制代碼 代碼如下:

//
//  YYtextview.m
//  04-寫文字
//
//  Created by 孔醫己 on 14-6-10.
//  Copyright (c) 2014年 itcast. All rights reserved.
//

#import "YYtextview.h"

@implementation YYtextview


- (void)drawRect:(CGRect)rect
{
   
    // 畫文字
    NSString *str = @"的額搜風搜分手了粉色發俄雙方說法offFF瓦房你F回復F入會費WFH;飛;FN返回WFH;哦發貨;F回復;FHISFHSIFH我皮膚好APIFRHi分紅AWFHIOF威鋒網i";
   
    // 1.獲取上下文
    //    CGContextRef ctx = UIGraphicsGetCurrentContext();
    // 2.繪圖
    // 不推薦使用C語言的方法繪制文字, 因為quraz2d中的坐標系和UIkit中的坐標系不一致, 繪制出來的文字是顛倒的, 而且通過C語言的方法繪制文字相當麻煩
    //    CGContextSelectFont(<#CGContextRef c#>, <#const char *name#>, <#CGFloat size#>, <#CGTextEncoding textEncoding#>)
    //    CGContextShowText(ctx, <#const char *string#>, <#size_t length#>)
   
    // 繪制矩形
    // 1.獲取上下文
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    // 2.繪圖
    CGContextAddRect(ctx, CGRectMake(50, 50, 100, 100));
    // 3.渲染
    CGContextStrokePath(ctx);
   
   
//    NSMutableDictionary *md = [NSMutableDictionary dictionary];
//    // 設置文字顏色
//    md[NSForegroundColorAttributeName] =[UIColor redColor];
//    // 設置文字背景顏色
//    md[NSBackgroundColorAttributeName] = [UIColor greenColor];
//    // 設置文字大小
//    md[NSFontAttributeName] = [UIFont systemFontOfSize:20];
   
    //    將文字繪制到指點的位置
    //    [str drawAtPoint:CGPointMake(10, 10) withAttributes:md];
   
    //    將文字繪制到指定的范圍內, 如果一行裝不下會自動換行, 當文字超出范圍后就不顯示
    [str drawInRect:CGRectMake(50, 50, 100, 100) withAttributes:nil];
}


@end


效果:

2015112493630437.png (289×276)

圖片

代碼1:

復制代碼 代碼如下:

//
//  YYimage.m
//  04-寫文字
//
//  Created by 孔醫己 on 14-6-10.
//  Copyright (c) 2014年 itcast. All rights reserved.
//

#import "YYimage.h"

@implementation YYimage


- (void)drawRect:(CGRect)rect
{
 
    //    1.加載圖片到內存中
    UIImage *image = [UIImage imageNamed:@"me"];
   
   
    // 利用drawAsPatternInRec方法繪制圖片到layer, 是通過平鋪原有圖片
    [image drawAsPatternInRect:CGRectMake(0, 0, 320, 480)];
}


@end


效果(平鋪):

2015112493720482.png (640×960)

代碼2:

復制代碼 代碼如下:

#import "YYimage.h"

@implementation YYimage


- (void)drawRect:(CGRect)rect
{
 
    //    1.加載圖片到內存中
    UIImage *image = [UIImage imageNamed:@"me"];
   
   
    // 利用OC方法將圖片繪制到layer上
 
    // 利用drawInRect方法繪制圖片到layer, 是通過拉伸原有圖片
        [image drawInRect:CGRectMake(0, 0, 200, 200)];
   
    // 利用drawAsPatternInRec方法繪制圖片到layer, 是通過平鋪原有圖片
//    [image drawAsPatternInRect:CGRectMake(0, 0, 320, 480)];
}


@end


效果(拉伸圖片):

2015112493741876.png (284×272)

代碼3:

復制代碼 代碼如下:

//
//  YYimage.m
//  04-寫文字
//
//  Created by 孔醫己 on 14-6-10.
//  Copyright (c) 2014年 itcast. All rights reserved.
//

#import "YYimage.h"

@implementation YYimage


- (void)drawRect:(CGRect)rect
{
 
    //    1.加載圖片到內存中
    UIImage *image = [UIImage imageNamed:@"me"];
   
   
    // 利用OC方法將圖片繪制到layer上
   
    // 將圖片繪制到指定的位置
    [image drawAtPoint:CGPointMake(100, 100)];
    }


效果(把圖片繪制到一個固定的位置):

2015112493758442.png (312×297)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美影院在线播放| 日本不卡免费高清视频| 国产va免费精品高清在线| 亚洲一级免费视频| 亚洲人成网站777色婷婷| 97在线视频免费| 久久精品国产69国产精品亚洲| 国模精品视频一区二区三区| 97精品视频在线观看| 欧美成人免费一级人片100| 精品国产91久久久| 热久久这里只有| 精品国产31久久久久久| 亚洲男人第一网站| 国产精品久久久久aaaa九色| 亚洲图片欧洲图片av| 性欧美xxxx交| 国产精品免费小视频| 亚洲天堂av在线免费| 91香蕉嫩草神马影院在线观看| 日韩高清有码在线| 日韩毛片在线观看| 欧美性受xxxx白人性爽| 国产美女直播视频一区| 久久久久亚洲精品国产| 97色在线观看免费视频| 国内精品伊人久久| 色噜噜狠狠狠综合曰曰曰88av| 欧美激情视频在线免费观看 欧美视频免费一| 91麻豆国产语对白在线观看| 国产精品高潮呻吟久久av黑人| 欧美激情女人20p| 日韩av片免费在线观看| 91精品视频免费看| 亚洲激情久久久| 亚洲999一在线观看www| 性色av一区二区三区红粉影视| 日韩精品高清视频| 亚洲最新在线视频| 亚洲欧美资源在线| 国产福利精品av综合导导航| 久久亚洲一区二区三区四区五区高| 91av在线免费观看| 久久夜色精品国产欧美乱| 亚洲人成网站777色婷婷| **欧美日韩vr在线| 国产亚洲欧美aaaa| 黄网站色欧美视频| 欧美另类99xxxxx| 国产成人精品a视频一区www| 日韩三级成人av网| 亚洲精品suv精品一区二区| 亚洲高清在线观看| 国产精品444| 亚洲精品视频免费在线观看| 日韩欧美视频一区二区三区| 精品久久久久国产| 亚洲欧洲一区二区三区在线观看| 国产精品久久久久久久久久东京| 91免费在线视频网站| 亚洲中国色老太| 亚洲人午夜精品免费| 久久国产精品亚洲| 66m—66摸成人免费视频| 九九久久久久99精品| 久久精品国产久精国产一老狼| 亚洲精品国产精品乱码不99按摩| 精品国产一区二区三区四区在线观看| 成人免费网站在线| 中文字幕亚洲字幕| 国产精品久久久久aaaa九色| 奇米影视亚洲狠狠色| 亚洲aaa激情| 精品国产欧美一区二区三区成人| 久久久久在线观看| 亚洲直播在线一区| 久久亚洲精品国产亚洲老地址| 懂色av影视一区二区三区| 中文字幕一区二区精品| 国产精品第8页| 亚洲天堂男人天堂女人天堂| 91国内揄拍国内精品对白| 国产精品激情av在线播放| 91a在线视频| 国产亚洲精品激情久久| 欧美又大又硬又粗bbbbb| 精品亚洲aⅴ在线观看| 亚洲精品国产精品乱码不99按摩| 亚洲精品按摩视频| 69影院欧美专区视频| 国产精品激情av在线播放| 国产mv免费观看入口亚洲| 亚洲激情视频在线观看| 精品网站999www| 国产又爽又黄的激情精品视频| 久久99热这里只有精品国产| 91久久久久久久久久久久久| 26uuu亚洲国产精品| 亚洲日本成人女熟在线观看| 久久伊人色综合| 成人网在线视频| 国产视频福利一区| 国产小视频国产精品| 亚洲成年人在线| 欧美精品一区三区| 亚洲精品久久久久久久久久久| 久久天天躁狠狠躁夜夜爽蜜月| 国产日韩欧美电影在线观看| 成人一区二区电影| 日韩av快播网址| 日韩av资源在线播放| 欧美在线视频a| 亚洲国产成人精品电影| 在线观看国产精品淫| 亚洲男人第一网站| 日韩欧美a级成人黄色| 日韩欧美主播在线| 久久久久久久久综合| 欧美在线激情网| 中文字幕精品网| 国产精品va在线播放我和闺蜜| 91产国在线观看动作片喷水| 欧美性视频网站| 97在线观看视频| 欧美猛少妇色xxxxx| 欧美在线影院在线视频| 日本欧美中文字幕| 欧美自拍大量在线观看| 亚洲人成电影网站色xx| 日韩精品免费观看| 精品国偷自产在线| 久久男人的天堂| 国产精品揄拍500视频| 这里只有精品在线观看| 国产精品久久色| 久久亚洲精品视频| 国产精品国产亚洲伊人久久| 日韩美女视频在线观看| 国产97人人超碰caoprom| 亚洲精品99久久久久中文字幕| 一本一本久久a久久精品牛牛影视| 亚洲aaa激情| 欧美天天综合色影久久精品| 992tv成人免费影院| 国产免费久久av| 亚洲精品ady| 国产成人精品免高潮费视频| 亚洲国产古装精品网站| 欧美丝袜一区二区三区| 久久人人爽国产| www.午夜精品| 精品国产一区久久久| 久久夜色精品国产亚洲aⅴ| 免费av一区二区| 精品国产1区2区| 欧美色视频日本版| 欧美在线观看一区二区三区| 亚洲欧美成人一区二区在线电影| 国产有码一区二区| 在线观看亚洲区| 一区二区亚洲精品国产| 国产日韩在线免费| 亚洲欧美精品在线| 国产亚洲美女精品久久久|