iOS_Quartz2D_仿射變化和圖形上下文棧

展示效果:


效果圖



效果圖


效果圖

請問:實現的步驟是什么?

第一步,首先繪制一個線條,一個橢圓,和一個矩形框,然后添加到路徑中,進行渲染.

第二步豪椿,進行仿射變化.特別注意:仿射變化應該在拿到上下文之后立即編寫代碼,然后再進行繪制操作.不然就沒有效果了.

第三步座慰,需求:最后再繪制一個圓,這個圓的寬度是默認的,顏色也是默認的,并且不要做任何形變操作.因此我們需要在最開始對圖形上下文的狀態(tài)進行備份.將狀態(tài)先備份到“圖形上下文椏跤啵”中,然后再進行下一個路徑繪制時,先取出保存在圖形上下文棧的狀態(tài).最后來繪制.

//代碼實現

------------------------------ HMRootView.m------------------------------

- (void)drawRect:(CGRect)rect {

// 1.獲取圖形上下文

CGContextRefctx =UIGraphicsGetCurrentContext();

//在對圖形上下文的狀態(tài)進行任何操作之前,先備份一份到"圖形上下文棧"中

CGContextSaveGState(ctx);

/*****拿到上下文后立刻做仿射變換,然后再開始繪圖操作*****/

//縮放

CGContextScaleCTM(ctx,0.5,0.5);

//旋轉

CGContextRotateCTM(ctx,M_PI_4*0.5);

//平移

CGContextTranslateCTM(ctx,150,100);

// 2.創(chuàng)建路徑對象

// 2.1畫線

UIBezierPath*pathLine = [UIBezierPathbezierPath];

[pathLinemoveToPoint:CGPointMake(50,50)];

[pathLineaddLineToPoint:CGPointMake(250,150)];

// 2.2畫橢圓

UIBezierPath*pathOval = [UIBezierPathbezierPathWithOvalInRect:CGRectMake(30,200,250,80)];

// 2.3繪制一個矩形

UIBezierPath*pathRect = [UIBezierPathbezierPathWithRect:CGRectMake(150,50,50,200)];

//把路徑添加到上下文中

CGContextAddPath(ctx, pathLine.CGPath);

CGContextAddPath(ctx, pathOval.CGPath);

CGContextAddPath(ctx, pathRect.CGPath);

//設置顏色

[[UIColorredColor]set];

//設置線寬

CGContextSetLineWidth(ctx,20);

//設置線頭樣式

CGContextSetLineCap(ctx,kCGLineCapRound);

// 3.渲染

CGContextDrawPath(ctx,kCGPathStroke);

/*****需求:最后再繪制一個圓唾戚,這個圓的線寬是默認的浸踩,顏色也是默認的扳肛,并且不要做任何形變操作*****/

//從上下文棧中獲取上次保存的狀態(tài)

CGContextRestoreGState(ctx);

UIBezierPath*pathCircle = [UIBezierPathbezierPathWithOvalInRect:CGRectMake(80,100,200,200)];

CGContextAddPath(ctx, pathCircle.CGPath);

CGContextDrawPath(ctx,kCGPathStroke);

}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末傻挂,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子挖息,更是在濱河造成了極大的恐慌金拒,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件套腹,死亡現場離奇詭異绪抛,居然都是意外死亡,警方通過查閱死者的電腦和手機电禀,發(fā)現死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進店門幢码,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人尖飞,你說我怎么就攤上這事症副。” “怎么了葫松?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵瓦糕,是天一觀的道長。 經常有香客問我腋么,道長咕娄,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任珊擂,我火速辦了婚禮圣勒,結果婚禮上,老公的妹妹穿的比我還像新娘摧扇。我一直安慰自己圣贸,他們只是感情好,可當我...
    茶點故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布扛稽。 她就那樣靜靜地躺著吁峻,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上用含,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天矮慕,我揣著相機與錄音,去河邊找鬼啄骇。 笑死痴鳄,一個胖子當著我的面吹牛,可吹牛的內容都是我干的缸夹。 我是一名探鬼主播痪寻,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼虽惭!你這毒婦竟也來了橡类?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤趟妥,失蹤者是張志新(化名)和其女友劉穎猫态,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體披摄,經...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡亲雪,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了疚膊。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片义辕。...
    茶點故事閱讀 39,795評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖寓盗,靈堂內的尸體忽然破棺而出灌砖,到底是詐尸還是另有隱情,我是刑警寧澤傀蚌,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布基显,位于F島的核電站,受9級特大地震影響善炫,放射性物質發(fā)生泄漏撩幽。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一箩艺、第九天 我趴在偏房一處隱蔽的房頂上張望窜醉。 院中可真熱鬧,春花似錦艺谆、人聲如沸榨惰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽琅催。三九已至居凶,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間恢暖,已是汗流浹背排监。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工狰右, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留杰捂,地道東北人。 一個月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓棋蚌,卻偏偏與公主長得像嫁佳,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子谷暮,可洞房花燭夜當晚...
    茶點故事閱讀 44,724評論 2 354

推薦閱讀更多精彩內容

  • 第一步:先科普一下基礎知識: Core Graphics是基于C的API蒿往,可以用于一切繪圖操作 Core Grap...
    真愛要有你才完美閱讀 2,447評論 0 1
  • Quartz2D以及drawRect的重繪機制字數1487 閱讀21 評論1 喜歡1一、什么是Quartz2D Q...
    PurpleWind閱讀 771評論 0 3
  • 什么是Quartz 2D 1>Quartz 2D是一個二維繪圖引擎,同時支持iOS和Mac OS X系統(tǒng)(跨平臺,...
    青蔥烈馬閱讀 747評論 0 3
  • 那時湿弦,我做了很多夢 關于你的夢瓤漏,我的夢 現在,我做了很多夢 關于過去的夢颊埃,未來的夢 究竟是夢總歸要醒 還是在夢里蔬充,...
    拾舊可成詩閱讀 240評論 8 4
  • 文/付與筆端 春意濃 秋意濃 花開花謝年年同 何必再相逢 朝匆匆 暮匆匆 青絲白發(fā)俱有終 閑淡看枯榮 (自己挖的日...
    付與筆端閱讀 1,075評論 0 0