亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

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

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

#import <QuartzCore/QuartzCore.h>

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

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

寫(xiě)文字

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

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

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

畫(huà)直線

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

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

畫(huà)弧線

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

CGContextSetRGBStrokeColor(context, 0, 0, 1, 1);//改變畫(huà)筆顏色
    
    CGContextMoveToPoint(context, 140, 80);//開(kāi)始坐標(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半徑,注意, 需要算好半徑的長(zhǎng)度,
    CGContextAddArcToPoint(context, 148, 68, 156, 80, 10);
    
    CGContextStrokePath(context);//繪畫(huà)路徑
  

畫(huà)圓

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

- (void)drawRect:(CGRect)rect
{
    //獲得當(dāng)前畫(huà)板
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    //顏色
    CGContextSetRGBStrokeColor(ctx, 0.2, 0.2, 0.2, 1.0);
    //畫(huà)線的寬度
    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為圓點(diǎn)坐標(biāo),radius半徑,startAngle為開(kāi)始的弧度,endAngle為 結(jié)束的弧度,clockwise 0為順時(shí)針,1為逆時(shí)針。
    CGContextAddArc(ctx, 100, 20, 20, 0, 2*M_PI, 0); //添加一個(gè)圓
    CGContextDrawPath(ctx, kCGPathStroke); //繪制路徑
    [super drawRect:rect];
}

這個(gè)畫(huà)圓的公式你還記得嗎?你還知道M_PI是什么嗎?等于多少嗎?趕緊腦補(bǔ)一下吧!


畫(huà)大圓并填充顏色

復(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); //添加一個(gè)圓
    //kCGPathFill填充非零繞數(shù)規(guī)則,kCGPathEOFill表示用奇偶規(guī)則,kCGPathStroke路徑,kCGPathFillStroke路徑填充,kCGPathEOFillStroke表示描線,不是填充
    
    CGContextDrawPath(context, kCGPathFillStroke); //繪制路徑加填充

畫(huà)矩形

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

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

畫(huà)扇形

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

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

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

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

相關(guān)文章

  • iOS自定義日歷控件的簡(jiǎn)單實(shí)現(xiàn)過(guò)程

    iOS自定義日歷控件的簡(jiǎn)單實(shí)現(xiàn)過(guò)程

    這篇文章主要為大家詳細(xì)介紹了iOS自定義日歷控件的簡(jiǎn)單實(shí)現(xiàn)過(guò)程,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • ios基于MJRefresh實(shí)現(xiàn)上拉刷新和下拉加載動(dòng)畫(huà)效果

    ios基于MJRefresh實(shí)現(xiàn)上拉刷新和下拉加載動(dòng)畫(huà)效果

    本篇文章主要介紹了ios基于MJRefresh實(shí)現(xiàn)上拉刷新和下拉加載動(dòng)畫(huà)效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • iOS 模塊化之JLRoute路由示例

    iOS 模塊化之JLRoute路由示例

    這篇文章主要介紹了iOS 模塊化之JLRoute路由示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-02-02
  • 百度地圖PC端判斷用戶是否在配送范圍內(nèi)

    百度地圖PC端判斷用戶是否在配送范圍內(nèi)

    在pc端設(shè)置商家的配送范圍,用戶在下單時(shí),根據(jù)用戶設(shè)置的配送地點(diǎn)判斷是否在可配送范圍內(nèi),并給用戶相應(yīng)的提示,下面通過(guò)本文給大家分享具有實(shí)現(xiàn)代碼,感興趣的朋友一起學(xué)習(xí)吧
    2016-01-01
  • iOS實(shí)現(xiàn)簡(jiǎn)易抽屜效果、雙邊抽屜效果

    iOS實(shí)現(xiàn)簡(jiǎn)易抽屜效果、雙邊抽屜效果

    這篇文章主要為大家詳細(xì)介紹了兩款iOS抽屜效果,簡(jiǎn)易抽屜效果、以及雙邊抽屜效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-02-02
  • iOS UIAlertView自動(dòng)關(guān)閉功能

    iOS UIAlertView自動(dòng)關(guān)閉功能

    這篇文章主要介紹了iOS UIAlertView自動(dòng)關(guān)閉,需要的朋友可以參考下
    2017-06-06
  • iOS中程序異常Crash友好化處理詳解

    iOS中程序異常Crash友好化處理詳解

    在iOS開(kāi)發(fā)調(diào)試過(guò)程中以及上線之后,程序經(jīng)常會(huì)出現(xiàn)崩潰的問(wèn)題,下面這篇文章主要給大家介紹了關(guān)于iOS中程序異常Crash友好化處理的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2018-07-07
  • IOS代碼筆記之左右滑動(dòng)效果

    IOS代碼筆記之左右滑動(dòng)效果

    這篇文章主要為大家詳細(xì)介紹了IOS代碼筆記之左右滑動(dòng)效果的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-07-07
  • IOS-MVC層讀取服務(wù)器接口JSON數(shù)據(jù)

    IOS-MVC層讀取服務(wù)器接口JSON數(shù)據(jù)

    這篇文章主要為大家詳細(xì)介紹了IOS-MVC層讀取服務(wù)器接口JSON數(shù)據(jù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • 深入講解iOS開(kāi)發(fā)中應(yīng)用數(shù)據(jù)的存儲(chǔ)方式

    深入講解iOS開(kāi)發(fā)中應(yīng)用數(shù)據(jù)的存儲(chǔ)方式

    這篇文章主要介紹了iOS開(kāi)發(fā)中應(yīng)用數(shù)據(jù)的存儲(chǔ)方式,包括plistXML屬性列表和NSKeydeArchiver歸檔兩個(gè)部分,需要的朋友可以參考下
    2015-12-12

最新評(píng)論