CGContextRef所有屬性似忧,方法搞清

6D25F009-D4BA-4910-B37C-EAB07C4D11F4.png
我們想要在畫布上面畫東西擂煞,需要???吧,來煤辨,我們看看我們的畫筆
 
 設(shè)置繪制直線沦偎、邊框時的線條寬度
 1.void CGContextSetLineWidth(CGContextRef__nullable c, CGFloat width)
 有畫筆了,我不能只用一個畫筆吧吹缔,應(yīng)該有很多畫筆讓我選吧商佑,快給我拿不同顏色的
 2.CGContextSetRGBStrokeColor(context,1,1,1,1.0);//畫筆線的顏色
 都選好了,該我畫了厢塘,我先來畫條直線玩玩吧茶没,我在那個地方畫呢
 3.CGContextAddLines(ctx, point, 2);
 point是什么玩意,它就是我們需要畫的位置俗冻,好了一切都準備好了礁叔,我要開始畫了,不對我畫在那個地方
 4.CGContextRef ctx =UIGraphicsGetCurrentContext();
 好像這次真的可以開工了
 CGContextRef ctx =UIGraphicsGetCurrentContext();
 CGContextSetLineWidth(ctx, 2.f);
 CGContextSetStrokeColorWithColor(ctx, [UIColor redColor].CGColor);
 CGPoint point[2];
 point[0] =CGPointMake(10, 80);
 point[1] =CGPointMake(100, 80);
 CGContextAddLines(ctx, point, 2);
 怎么搞的我都弄好了迄薄,怎么沒有線呢琅关,是不是筆沒有墨水啊,沒寫上去啊 
 5.CGContextDrawPath(ctx, kCGPathStroke); //根據(jù)坐標繪制路徑
 這次果然有了讥蔽,伊涣易,kCGPathStroke這個是什么鬼,我把它拿出來瞅瞅
 6.typedef CF_ENUM (int32_t, CGPathDrawingMode) {
 kCGPathFill,//只有填充(非零纏繞數(shù)填充)冶伞,不繪制邊框  如圖1
 kCGPathEOFill,//奇偶規(guī)則填充(多條路徑交叉時新症,奇數(shù)交叉填充,偶交叉不填充)如圖2
 kCGPathStroke,        // 只有邊框  如圖3
 kCGPathFillStroke,    // 既有邊框又有填充  如圖4
 kCGPathEOFillStroke   // 奇偶填充并繪制邊框  如圖5
 };
 這個不錯响禽,我畫好了還能幫我自動給我上色徒爹,我準備了那么多就讓我畫一個直線?來我要先畫個圓玩玩芋类,我要想想我要多大的圓隆嗅,畫在那個位置,開始畫圓吧
 7.CGContextAddArc(CGContextRef cg_nullable c, CGFloat x, CGFloat y,
 CGFloat radius, CGFloat startAngle, CGFloat endAngle, int clockwise)
 // x,y為圓點坐標侯繁,radius半徑胖喳,startAngle為開始的弧度,endAngle為 結(jié)束的弧度贮竟,clockwise 0為順時針丽焊,1為逆時針。
 CGContextAddArc(ctx, 30, 30, 20, 0, 2 *M_PI, 0);
 CGContextDrawPath(ctx, kCGPathEOFillStroke); //根據(jù)坐標繪制路徑
 呦呵咕别,為什么中間的一坨是黑色啊技健,忘了準備給它上的色選色了
 8.CGContextSetFillColorWithColor(ctx, [UIColor blueColor].CGColor);
 這樣一個很帥的圓就出現(xiàn)了,我想來個扇形玩玩惰拱,
 CGContextAddArc(ctx, 80, 80, 30, 0, M_PI_2, 1);
 CGContextDrawPath(ctx, kCGPathEOFillStroke); //根據(jù)坐標繪制路徑
 一個方法而已雌贱,不好玩,來點有意思的好不好,畫個三角玩玩
 9.CGPoint point3[3];
 
 point3[0] =CGPointMake(10, 120);
 point3[1] =CGPointMake(10, 150);
 point3[2] =CGPointMake(40, 120);
 CGContextAddLines(ctx, point3, 3);
 
 CGContextClosePath(ctx);把幾個點封閉起來
 CGContextSetLineCap(ctx, kCGLineCapSquare);設(shè)置線段端點的繪制形狀
 CGContextSetLineJoin(ctx, kCGLineJoinBevel);設(shè)置線條連接點的風格
 CGContextDrawPath(ctx, kCGPathStroke);
 我以為有什么神奇的呢帽芽,這不就是上面的方法嘛,不行來個矩形翔冀,
 10.CGContextFillRect(ctx, CGRectMake(50, 150, 30, 30));//填充顏色矩形导街,設(shè)置model是無效的
    CGContextStrokeRect(CGContextRef cg_nullable c, CGRect rect)//填充邊框,設(shè)置model是無效的
    CGContextAddRect(ctx, CGRectMake(90, 150, 40, 40));//這個是都有效的
 你還別說纤子,這分類分的還挺好搬瑰,都給我們準備好樣式了,這樣的填充沒意思控硼,有沒有漸變式的顏色填充呢泽论?
 11.CGContextDrawLinearGradient(CGContextRef context,CGGradientRef gradient, CGPoint startPoint, CGPoint endPoint,CGGradientDrawingOptions options)
    gradient漸變顏色,startPoint開始漸變的起始位置,endPoint結(jié)束坐標,options開始坐標之前or開始之后開始漸變
 一臉懵逼,都是些什么參數(shù)啊卡乾,CGGradientRef按CGContextRef的思路翼悴,需要獲取吧,問題是我們還沒創(chuàng)建去哪獲取啊幔妨,來創(chuàng)建一個再說
 12.CGGradientRef gradient =CGGradientCreateWithColorComponents(rgb, color, NULL, sizeof(color)/(sizeof(color[0])*4));
 rbb是什么鬼鹦赎,又沒創(chuàng)建
 13.CGColorSpaceRef rgb =CGColorSpaceCreateDeviceRGB();這一下沒有要創(chuàng)建的了吧,搞個漸變那么費勁误堡,不爽吧
     CGColorSpaceRef rgb =CGColorSpaceCreateDeviceRGB();
     
     CGFloat color[] ={
     1,1,1, 1.00,
     1,1,0, 1.00,
     1,0,0, 1.00,
     1,0,1, 1.00,
     0,1,1, 1.00,
     0,1,0, 1.00,
     0,0,1, 1.00,
     0,0,0, 1.00,
     
     };
     
     CGGradientRef gradient =CGGradientCreateWithColorComponents(rgb, color, NULL, sizeof(color)/(sizeof(color[0])*4));
     
     CGColorSpaceRelease(rgb);
     
     CGContextSaveGState(ctx);
     CGContextMoveToPoint(ctx, 220, 90);
     CGContextAddLineToPoint(ctx, 240, 90);
     CGContextAddLineToPoint(ctx, 240, 110);
     CGContextAddLineToPoint(ctx, 220, 110);
     CGContextClip(ctx);//context裁剪路徑,后續(xù)操作的路徑
     
     CGContextDrawLinearGradient(ctx, gradient,CGPointMake
     (220,90) ,CGPointMake(240,110),
     kCGGradientDrawsAfterEndLocation);
     CGContextRestoreGState(ctx);// 恢復(fù)到之前的context
 14. CGContextSaveGState(ctx)古话,CGContextRestoreGState(ctx);// 恢復(fù)到之前的context這個又是什么鬼,聽我慢慢絮叨锁施,這個主要用于保存剪切的前后陪踩,剪切以后為了恢復(fù)原來的狀態(tài)
    // 需要說明的是,CGContextSaveGState()函數(shù)保存的繪圖狀態(tài)悉抵,不僅包括當前坐標系統(tǒng)的狀態(tài)肩狂,也包括當前設(shè)置的填充風格、線條風格基跑、陰影風格等各種繪圖狀態(tài)婚温。但 CGContextSaveGState()函數(shù)不會保存當前繪制的圖形
    這個玩意條件限制真不少,費了那么大的勁媳否,就讓我弄個矩形栅螟,不甘心,來再弄個圓形玩玩
 15.    CGContextDrawRadialGradient(ctx, gradient, CGPointMake(200, 200), 0.0, CGPointMake(200, 200), 40, kCGGradientDrawsBeforeStartLocation);
    這個圓畫的還不錯篱竭,來個橢圓玩玩可好
 16. CGContextAddEllipseInRect(ctx, CGRectMake(160, 180, 60, 30));
    CGContextDrawPath(ctx, kCGPathFillStroke);
 和圓幾乎差不多哦力图,突然感覺累了,再來倆個曲線結(jié)束
17.畫貝塞爾曲線
二次曲線
CGContextMoveToPoint(ctx, 120, 300);//設(shè)置Path的起點
CGContextAddQuadCurveToPoint(ctx,190, 310, 120, 390);//設(shè)置貝塞爾曲線的控制點坐標和終點坐標
CGContextDrawPath(ctx, kCGPathFillStroke);
18.三次曲線函數(shù)
CGContextMoveToPoint(ctx, 200, 300);//設(shè)置Path的起點
CGContextAddCurveToPoint(ctx,250, 280, 250, 400, 280, 300);//設(shè)置貝塞爾曲線的控制點坐標和控制點坐標終點坐標
CGContextDrawPath(ctx, kCGPathFillStroke);  

來個??玩玩

EDE01ABB-12FB-4E60-8D38-8955CFC5F05E.png
CGContextRef ctx =UIGraphicsGetCurrentContext();
    CGContextSaveGState(ctx);
    CGContextSetLineWidth(ctx, 3);
    
    CGFloat lengths[] ={6,3};
    
    CGContextSetLineDash(ctx, 0,lengths, 2);
    
    CGContextSetStrokeColorWithColor(ctx, [UIColor yellowColor].CGColor);
    
    CGContextSetFillColorWithColor(ctx, [UIColor grayColor].CGColor);
    
    CGContextSetLineJoin(ctx, kCGLineJoinRound);
    
//    CGContextSetFlatness(ctx, 2);
//    CGContextSetLineCap(ctx, kCGLineCapRound);
//    CGContextSetMiterLimit(ctx, 0);
    
    CGPoint point[3];
    point[0]=CGPointMake(40, 100);
    point[1]=CGPointMake(120, 100);
    point[2]=CGPointMake(80, 130);
    
    CGContextAddLines(ctx, point, 3);
    CGContextClosePath(ctx);

    CGPoint point1[4];
    point1[0] =CGPointMake(56, 148);
    point1[1] =CGPointMake(80, 100-20*sqrt(2));
    point1[2] =CGPointMake(104, 148);
    point1[3] =CGPointMake(80, 130);
    
    CGContextAddLines(ctx, point1, 4);
    CGContextClosePath(ctx);
//    CGContextStrokePath(ctx);

//    CGFloat color[] ={
//        1,1,1, 1.00,
//        1,1,0, 1.00,
//    };
//    CGFloat color[12]={
//        248.0/255.0,86.0/255.0,86.0/255.0,1,
//        249.0/255.0,127.0/255.0,127.0/255.0,1,
//        1.0,1.0,1.0,1.0
//    };
    
    CGFloat color[] ={
//        1,0,0,1,//紅
        0,1,0,1,//綠
        1,1,1,1};//藍
    
    CGColorSpaceRef rgb  =CGColorSpaceCreateDeviceRGB();
    CGFloat locations[2] = {0,1};

    CGGradientRef gradient =CGGradientCreateWithColorComponents(rgb, color, locations, 2);
    
    CGColorSpaceRelease(rgb);
    CGContextClip(ctx);

    CGContextDrawLinearGradient(ctx, gradient, CGPointMake(40, 100), CGPointMake(120, 100), kCGGradientDrawsBeforeStartLocation);
    CGContextRestoreGState(ctx);

下面是關(guān)于果凍的動畫的鏈接
果凍鏈接

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末掺逼,一起剝皮案震驚了整個濱河市吃媒,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖赘那,帶你破解...
    沈念sama閱讀 222,681評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件刑桑,死亡現(xiàn)場離奇詭異,居然都是意外死亡募舟,警方通過查閱死者的電腦和手機祠斧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,205評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來拱礁,“玉大人琢锋,你說我怎么就攤上這事∧卦睿” “怎么了吴超?”我有些...
    開封第一講書人閱讀 169,421評論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長鸯乃。 經(jīng)常有香客問我鲸阻,道長,這世上最難降的妖魔是什么飒责? 我笑而不...
    開封第一講書人閱讀 60,114評論 1 300
  • 正文 為了忘掉前任赘娄,我火速辦了婚禮,結(jié)果婚禮上宏蛉,老公的妹妹穿的比我還像新娘遣臼。我一直安慰自己,他們只是感情好拾并,可當我...
    茶點故事閱讀 69,116評論 6 398
  • 文/花漫 我一把揭開白布揍堰。 她就那樣靜靜地躺著,像睡著了一般嗅义。 火紅的嫁衣襯著肌膚如雪屏歹。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,713評論 1 312
  • 那天之碗,我揣著相機與錄音蝙眶,去河邊找鬼。 笑死褪那,一個胖子當著我的面吹牛幽纷,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播博敬,決...
    沈念sama閱讀 41,170評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼友浸,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了偏窝?” 一聲冷哼從身側(cè)響起收恢,我...
    開封第一講書人閱讀 40,116評論 0 277
  • 序言:老撾萬榮一對情侶失蹤武学,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后伦意,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體火窒,經(jīng)...
    沈念sama閱讀 46,651評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,714評論 3 342
  • 正文 我和宋清朗相戀三年驮肉,在試婚紗的時候發(fā)現(xiàn)自己被綠了沛鸵。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,865評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡缆八,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出疾捍,到底是詐尸還是另有隱情奈辰,我是刑警寧澤,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布乱豆,位于F島的核電站奖恰,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏宛裕。R本人自食惡果不足惜瑟啃,卻給世界環(huán)境...
    茶點故事閱讀 42,211評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望揩尸。 院中可真熱鬧蛹屿,春花似錦、人聲如沸岩榆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,699評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽勇边。三九已至犹撒,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間粒褒,已是汗流浹背识颊。 一陣腳步聲響...
    開封第一講書人閱讀 33,814評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留奕坟,地道東北人祥款。 一個月前我還...
    沈念sama閱讀 49,299評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像执赡,于是被迫代替她去往敵國和親镰踏。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,870評論 2 361

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,327評論 25 707
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫沙合、插件奠伪、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,124評論 4 61
  • 一轉(zhuǎn)眼跌帐,來北京已經(jīng)三年了。這三年绊率,一直數(shù)落著北京的不好谨敛,可是真正到了離別的時候,又開始對自己執(zhí)意要放棄的東西莫名感...
    藍國王燈閱讀 304評論 0 1
  • 文|龍十五 昨天在言幾又書店瞅到《有錢人和你想的不一樣》連忙買了,坐下來一口氣從頭讀到尾:為的是核對自己和書中作者...
    龍十五_閱讀 1,787評論 7 24
  • 夜晚卿啡,電話響起的時候,公交堵在了三環(huán)路上的雙井橋菱父,而我正在最后一排張著嘴熟睡颈娜,迷迷糊糊的就按下了接聽鍵。 簡單的就...
    頁時弎未閱讀 253評論 0 0