最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

iOS App開發(fā)中用CGContextRef繪制基本圖形的基本示例

 更新時間:2016年05月07日 09:25:17   作者:李剛  
這篇文章主要介紹了iOS App開發(fā)中用CGContextRef繪制基本圖形的基本示例,CGContextRef同時可以進(jìn)行圖形顏色的填充以及文字的書寫,需要的朋友可以參考下

Graphics Context是圖形上下文,也可以理解為一塊畫布,我們可以在上面進(jìn)行繪畫操作,繪制完成后,將畫布放到我們的view中顯示即可,view看作是一個畫框.
CGContextRef功能強大,我們借助它可以畫各種圖形。開發(fā)過程中靈活運用這些技巧,可以幫助我們提供代碼水平。

首先創(chuàng)建一個集成自UIView的,自定義CustomView類。
在CustomView.m中實現(xiàn)代碼。

復(fù)制代碼 代碼如下:

#import <QuartzCore/QuartzCore.h>

覆蓋DranRect方法,在此方法中繪制圖形。
CustomView寫好之后,需要使用到視圖控制器中。
使用方法:
復(fù)制代碼 代碼如下:

  CustomView *customView = [[CustomView alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
    [self.view addSubview:customView];

寫文字

復(fù)制代碼 代碼如下:

- (void)drawRect:(CGRect)rect
{
    //獲得當(dāng)前畫板
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    //顏色
    CGContextSetRGBStrokeColor(ctx, 0.2, 0.2, 0.2, 1.0);
    //畫線的寬度
    CGContextSetLineWidth(ctx, 0.25);
    //開始寫字
    [@"我是文字" drawInRect:CGRectMake(10, 10, 100, 30) withFont:font]; 
    [super drawRect:rect];
}

這段代碼就可以很漂亮的寫出四個大字:我是文字。很容易理解,每句話都有注釋。

畫直線

復(fù)制代碼 代碼如下:

- (void)drawRect:(CGRect)rect
{
    //獲得當(dāng)前畫板
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    //顏色
    CGContextSetRGBStrokeColor(ctx, 0.2, 0.2, 0.2, 1.0);
    //畫線的寬度
    CGContextSetLineWidth(ctx, 0.25);
    //頂部橫線
    CGContextMoveToPoint(ctx, 0, 10);
    CGContextAddLineToPoint(ctx, self.bounds.size.width, 10);
    CGContextStrokePath(ctx);
    [super drawRect:rect];
}

畫弧線

復(fù)制代碼 代碼如下:

CGContextSetRGBStrokeColor(context, 0, 0, 1, 1);//改變畫筆顏色
    
    CGContextMoveToPoint(context, 140, 80);//開始坐標(biāo)p1
    
    //CGContextAddArcToPoint(CGContextRef c, CGFloat x1, CGFloat y1,CGFloat x2, CGFloat y2, CGFloat radius)
    //x1,y1跟p1形成一條線的坐標(biāo)p2,x2,y2結(jié)束坐標(biāo)跟p3形成一條線的p3,radius半徑,注意, 需要算好半徑的長度,
    CGContextAddArcToPoint(context, 148, 68, 156, 80, 10);
    
    CGContextStrokePath(context);//繪畫路徑
  

畫圓

復(fù)制代碼 代碼如下:

- (void)drawRect:(CGRect)rect
{
    //獲得當(dāng)前畫板
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    //顏色
    CGContextSetRGBStrokeColor(ctx, 0.2, 0.2, 0.2, 1.0);
    //畫線的寬度
    CGContextSetLineWidth(ctx, 0.25);
    //void CGContextAddArc(CGContextRef c,CGFloat x, CGFloat y,CGFloat radius,CGFloat startAngle,CGFloat endAngle, int clockwise)1弧度=180°/π (≈57.3°) 度=弧度×180°/π 360°=360×π/180 =2π 弧度
    // x,y為圓點坐標(biāo),radius半徑,startAngle為開始的弧度,endAngle為 結(jié)束的弧度,clockwise 0為順時針,1為逆時針。
    CGContextAddArc(ctx, 100, 20, 20, 0, 2*M_PI, 0); //添加一個圓
    CGContextDrawPath(ctx, kCGPathStroke); //繪制路徑
    [super drawRect:rect];
}

這個畫圓的公式你還記得嗎?你還知道M_PI是什么嗎?等于多少嗎?趕緊腦補一下吧!


畫大圓并填充顏色

復(fù)制代碼 代碼如下:

UIColor *aColor = [UIColor colorWithRed:1 green:0.0 blue:0 alpha:1];
    
    CGContextSetFillColorWithColor(context, aColor.CGColor);//填充顏色
    
    CGContextSetLineWidth(context, 3.0);//線的寬度
    
    CGContextAddArc(context, 250, 40, 40, 0, 2 * M_PI, 0); //添加一個圓
    //kCGPathFill填充非零繞數(shù)規(guī)則,kCGPathEOFill表示用奇偶規(guī)則,kCGPathStroke路徑,kCGPathFillStroke路徑填充,kCGPathEOFillStroke表示描線,不是填充
    
    CGContextDrawPath(context, kCGPathFillStroke); //繪制路徑加填充

畫矩形

復(fù)制代碼 代碼如下:

- (void)drawRect:(CGRect)rect
{
    //獲得當(dāng)前畫板
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    //顏色
    CGContextSetRGBStrokeColor(ctx, 0.2, 0.2, 0.2, 1.0);
    //畫線的寬度
    CGContextSetLineWidth(ctx, 0.25);
    CGContextAddRect(ctx, CGRectMake(2, 2, 30, 30));
    CGContextStrokePath(ctx);
    [super drawRect:rect];
}

畫扇形

復(fù)制代碼 代碼如下:

  //畫扇形,也就畫圓,只不過是設(shè)置角度的大小,形成一個扇形
    aColor = [UIColor colorWithRed:0 green:1 blue:1 alpha:1];
    CGContextSetFillColorWithColor(context, aColor.CGColor);//填充顏色
    //以10為半徑圍繞圓心畫指定角度扇形
    CGContextMoveToPoint(context, 160, 180);
    CGContextAddArc(context, 160, 180, 30,  -60 * PI / 180, -120 * PI / 180, 1);
    CGContextClosePath(context);
    CGContextDrawPath(context, kCGPathFillStroke); //繪制路徑
 

   
畫貝塞爾曲線
復(fù)制代碼 代碼如下:

 //二次曲線
    CGContextMoveToPoint(context, 120, 300);//設(shè)置Path的起點
    CGContextAddQuadCurveToPoint(context,190, 310, 120, 390);//設(shè)置貝塞爾曲線的控制點坐標(biāo)和終點坐標(biāo)
    CGContextStrokePath(context);
    //三次曲線函數(shù)
    CGContextMoveToPoint(context, 200, 300);//設(shè)置Path的起點
    CGContextAddCurveToPoint(context,250, 280, 250, 400, 280, 300);//設(shè)置貝塞爾曲線的控制點坐標(biāo)和控制點坐標(biāo)終點坐標(biāo)
    CGContextStrokePath(context);

相關(guān)文章

  • iOS獲取設(shè)備唯一標(biāo)識的8種方法

    iOS獲取設(shè)備唯一標(biāo)識的8種方法

    這篇文章主要為大家詳細(xì)介紹了iOS獲取設(shè)備唯一標(biāo)識的8種方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • 詳解ios中自定義cell,自定義UITableViewCell

    詳解ios中自定義cell,自定義UITableViewCell

    本篇文章主要介紹了ios中自定義cell,自定義UITableViewCell,非常具有實用價值,需要的朋友可以參考下。
    2016-12-12
  • iOS實現(xiàn)貝塞爾曲線動畫

    iOS實現(xiàn)貝塞爾曲線動畫

    這篇文章主要為大家詳細(xì)介紹了iOS實現(xiàn)貝塞爾曲線動畫,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • iOS字體大小適配的3種方法示例代碼

    iOS字體大小適配的3種方法示例代碼

    這篇文章主要給大家介紹了關(guān)于iOS字體大小適配的3種方法,文中通過示例代碼介紹的非常詳細(xì),對各位iOS開發(fā)者們具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-11-11
  • ios通過按鈕點擊異步加載圖片

    ios通過按鈕點擊異步加載圖片

    本文給大家匯總了幾種IOS中實現(xiàn)異步加載圖片的方法,十分的簡單實用,有需要的小伙伴可以參考下。
    2015-05-05
  • iOS使用AFN進(jìn)行單圖和多圖上傳的實例代碼

    iOS使用AFN進(jìn)行單圖和多圖上傳的實例代碼

    本篇文章中主要介紹了iOS使用AFN進(jìn)行單圖和多圖上傳的實例代碼,整理出單張和多張圖片上傳的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2017-04-04
  • iOS中Sqlite和FMDB使用詳解

    iOS中Sqlite和FMDB使用詳解

    這篇文章主要為大家介紹了iOS中Sqlite和FMDB使用方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • iOS仿微信搖一搖功能

    iOS仿微信搖一搖功能

    這篇文章主要為大家詳細(xì)介紹了iOS仿微信搖一搖功能的實現(xiàn)方法 ,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • iOS開發(fā)項目- 基于WebSocket的聊天通訊(1)

    iOS開發(fā)項目- 基于WebSocket的聊天通訊(1)

    這篇文章主要介紹了iOS開發(fā)項目- 基于WebSocket的聊天通訊,WebSocket是web通信方式的一種,有需要的可以了解一下。
    2016-11-11
  • iOS通過Runtime實現(xiàn)友盟統(tǒng)計的實例代碼

    iOS通過Runtime實現(xiàn)友盟統(tǒng)計的實例代碼

    本篇文章主要介紹了iOS通過Runtime實現(xiàn)友盟統(tǒng)計的實例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06

最新評論

平顺县| 大余县| 海阳市| 广饶县| 图木舒克市| 新兴县| 玉门市| 措美县| 福州市| 晋中市| 县级市| 调兵山市| 青州市| 塔城市| 宁德市| 朝阳市| 军事| 大石桥市| 揭东县| 乐业县| 左贡县| 凌云县| 诸城市| 虞城县| 界首市| 鄂托克旗| 紫云| 宝丰县| 文水县| 札达县| 洛宁县| 威信县| 同江市| 永福县| 图木舒克市| 东乡县| 湘阴县| 玉门市| 芒康县| 乌什县| 广元市|