Quart2D 畫圖一 (簡(jiǎn)單畫線、形狀)

自我使用學(xué)習(xí)畫圖的一些用法,可以由簡(jiǎn)單開始,實(shí)現(xiàn)復(fù)雜畫圖操作

畫線

#pragma mark - 繪制曲線
- (void)drawCurve
{
    /** 繪制曲線 */
    
    /** 1.獲取上下文 */
    CGContextRef ctf = UIGraphicsGetCurrentContext();
    
    /** 2.描述路徑 */
    /** 一定要有起點(diǎn) */
    CGContextMoveToPoint(ctf, 50, 50);
    CGContextAddQuadCurveToPoint(ctf, 150, 20, 250, 50);
    
    /** 3.渲染上下文 */
    CGContextStrokePath(ctf);
}

#pragma mark - 線的狀態(tài)
/**
 * beaier 封裝的畫法
 */
- (void)drawStateBezier
{
    UIBezierPath *path = [UIBezierPath bezierPath];
    
    [path moveToPoint:CGPointMake(50, 50)];
    
    [path addLineToPoint:CGPointMake(200, 200)];
    
    path.lineWidth = 10;
    
    [path stroke];
    
    
    UIBezierPath *path1 = [UIBezierPath bezierPath];
    
    [path1 moveToPoint:CGPointMake(50, 50)];
    
    [path1 addLineToPoint:CGPointMake(200, 200)];
    
    path1.lineWidth = 10;
    
    [path1 stroke];
}

/**
 * 系統(tǒng)畫法
 */
- (void)drawContextRefState
{
    /** 獲取圖形上下文 */
    CGContextRef ctf = UIGraphicsGetCurrentContext();
    
    /** 獲取路徑 */
    CGContextMoveToPoint(ctf, 50, 50);
    CGContextAddLineToPoint(ctf, 50, 200);
    
    /** 重新設(shè)置起點(diǎn),兩根線會(huì)分開 */
    //    CGContextMoveToPoint(ctf, 50, 50);
    /** 默認(rèn)上一根線的終點(diǎn)是下一根線的起點(diǎn) */
    CGContextAddLineToPoint(ctf, 200, 50);
    
    /** 設(shè)置繪圖狀態(tài), 一定要在渲染之前 */
    /** 顏色 */
    [[UIColor redColor] setStroke];
    /** 線寬 */
    CGContextSetLineWidth(ctf, 30);
    /** 設(shè)置連接樣式 */
    CGContextSetLineJoin(ctf, kCGLineJoinRound);/** 圓拐角 */
    /** 設(shè)置頂角樣式 */
    CGContextSetLineCap(ctf, kCGLineCapRound);
    
    CGContextStrokePath(ctf);
}

#pragma mark - 畫線的三種方式
/**
 * bezier畫線
 */
- (void)drawBezierLines
{
    /** UIKit封裝了繪圖功能 */
    
    /** 貝塞爾曲線 */
    
    /** 創(chuàng)建路徑 */
    UIBezierPath *path = [UIBezierPath bezierPath];
    
    /** 設(shè)置起點(diǎn) */
    [path moveToPoint:CGPointMake(50, 50)];
    
    /** 添加一個(gè)線 */
    [path addLineToPoint:CGPointMake(200, 200)];
    
    /** 渲染 */
    [path stroke];
}

/**
 * 系統(tǒng)畫線
 */
- (void)drawLine
{
    /** 1.獲取圖形上下文 */
    /** 目前我們用的上下文都是UIGraphics開頭 */
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    
    /** 2.描述路徑 */
    /** 創(chuàng)建路徑 */
    CGMutablePathRef path = CGPathCreateMutable();
    /** 設(shè)置起點(diǎn) */
    CGPathMoveToPoint(path, NULL, 50, 30);
    /** 添加一根線到莫個(gè)點(diǎn) */
    CGPathAddLineToPoint(path, NULL, 200, 200);
    
    /** 3.路徑添加到上下文 */
    CGContextAddPath(ctx, path);
    
    /** 4.渲染上下文到view的圖層上 */
    CGContextStrokePath(ctx);

}

/**
 * 省略的系統(tǒng)畫線方法
 */
- (void)drawLineSimple
{
    /** 獲取上下文 */
    CGContextRef ctf = UIGraphicsGetCurrentContext();
    
    /** 描述路徑 */
    /** 設(shè)置起點(diǎn) */
    CGContextMoveToPoint(ctf, 50, 50);
    /** 設(shè)置終點(diǎn) */
    CGContextAddLineToPoint(ctf, 200, 200);
    
    /** 渲染上下文 */
    CGContextStrokePath(ctf);
    
}

畫形狀

#pragma mark - 畫簡(jiǎn)單形狀
- (void)drawCycleLine
{
    /** 圓角矩形  */
    UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(40, 50, 40, 60) cornerRadius:5];
    
    [path stroke];
    
    /** 圓弧
     * Center: 圓心
     * angle:  弧度
     * clockwise: yes是順時(shí)針
     */
    UIBezierPath *path1 = [UIBezierPath bezierPathWithArcCenter:CGPointMake(125, 125) radius:100 startAngle:0 endAngle:M_PI clockwise:YES];
    
    [path1 stroke];
    
    //    [path fill];/** 一個(gè)完整的封閉路徑,用填充,整個(gè)路徑的面都是一樣的 */
}

#pragma mark - 畫扇形
- (void)drawSector
{
    CGPoint center = CGPointMake(125, 125);
    
    UIBezierPath *path = [UIBezierPath bezierPathWithArcCenter:center radius:80 startAngle:0 endAngle:M_PI_2 clockwise:YES];
    
    [path addLineToPoint:center];
    
    /** 關(guān)閉路徑
     * 默認(rèn)從終點(diǎn)畫到起點(diǎn)
     */
//    [path closePath];
    
    /** 如果使用填充,會(huì)自動(dòng)關(guān)閉路徑 */
    [path fill];
    
}

注意: 這些方法一定要在視圖的 drawRect 方法中調(diào)用

- (void)drawRect:(CGRect)rect {
    // Drawing code
    
    [self drawSector];

}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,422評(píng)論 4 61
  • 一. Quartz2D Quartz 2D 是一個(gè)二維繪圖引擎,它能夠支持: 1、繪制圖形: 線條、三角形、矩形、...
    純情_小火雞閱讀 1,099評(píng)論 0 0
  • 我家后邊的一家的孩子今天結(jié)婚了,是倒插門,那家人只有這一個(gè)兒子。 我們是一個(gè)“門里”的,按輩分那家男主人是我大...
    放羊的二狗閱讀 165評(píng)論 0 0
  • 源碼基于Picasso 2.5.2。 一,概括 從Picasso最簡(jiǎn)單的調(diào)用來(lái)一觀Picasso的整體流程。給個(gè)圖...
    wang_zd閱讀 505評(píng)論 0 0
  • 文/涼樹姑娘 前兩天,看了薛之謙在上海演唱會(huì)上為前妻高磊鑫唱《安和橋》的視頻,才發(fā)現(xiàn),原來(lái)這個(gè)總說(shuō)“你神經(jīng)病啊”的...
    涼樹姑娘閱讀 634評(píng)論 4 1

友情鏈接更多精彩內(nèi)容