Quartz 2D編程指南之九:透明層

本文轉(zhuǎn)載自:http://southpeak.github.io/2014/12/10/quartz2d-9/

透明層(TransparencyLayers)通過(guò)組合兩個(gè)或多個(gè)對(duì)象來(lái)生成一個(gè)組合圖形旱物。組合圖形被看成是單一對(duì)象遥缕。當(dāng)需要在一組對(duì)象上使用特效時(shí)单匣,透明層非常有用,如圖9-1所示的給三個(gè)圓使用陰影的效果逮矛。

Figure 9-1 Three circles as a composite in a transparency layer

如果沒有使用透明層來(lái)渲染圖9-1中的三個(gè)圓姓赤,對(duì)它們使用陰影的效果將是如圖9-2所示:

Figure 9-2 Three circles painted as separate entities

透明層的工作方式

Quartz的透明層類似于許多流行的圖形應(yīng)用中的層。層是獨(dú)立的實(shí)體羡鸥。Quartz維護(hù)為每個(gè)上下文維護(hù)一個(gè)透明層棧,并且透明層是可以嵌套的纵朋。但由于層通常是棧的一部分柿顶,所以我們不能單獨(dú)操作它們。

我們通過(guò)調(diào)用函數(shù)CGContextBeginTransparencyLayer來(lái)開始一個(gè)透明層聂薪,該函數(shù)需要兩個(gè)參數(shù):圖形上下文與CFDictionary對(duì)象家乘。字典中包含我們所提供的指定層額外信息的選項(xiàng),但由于Quartz 2D API中沒有使用字典藏澳,所以我們傳遞一個(gè)NULL仁锯。在調(diào)用這個(gè)函數(shù)后,圖形狀態(tài)參數(shù)保持不變翔悠,除了alpha值[默認(rèn)設(shè)置為1]业崖、陰影[默認(rèn)關(guān)閉]野芒、混合模式[默認(rèn)設(shè)置為normal]、及其它影響最終組合的參數(shù)双炕。

在開始透明層操作后复罐,我們可以繪制任何想顯示在層上的對(duì)象。指定上下文中的繪制操作將被當(dāng)成一個(gè)組合對(duì)象繪制到一個(gè)透明背景上雄家。這個(gè)背景被當(dāng)作一個(gè)獨(dú)立于圖形上下文的目標(biāo)緩存效诅。

當(dāng)繪制完成后,我們調(diào)用函數(shù)CGContextEndTransparencyLayer趟济。Quartz將結(jié)合對(duì)象放入上下文乱投,并使用上下文的全局alpha值、陰影狀態(tài)及裁減區(qū)域作用于組合對(duì)象顷编。

在透明層中進(jìn)行繪制

在透明層中繪制需要三步:

調(diào)用函數(shù)CGContextBeginTransparencyLayer

在透明層中繪制需要組合的對(duì)象

調(diào)用函數(shù)CGContextEndTransparencyLayer

圖9-3顯示了在透明層中繪制三個(gè)矩形戚炫,其中將這三個(gè)矩形當(dāng)成一個(gè)整體來(lái)渲染陰影。

Figure 9-3 Three rectangles painted to a transparency layer

代碼清單9-1顯示了如何利用透明層生成圖9-3所示的矩形媳纬。

Listing 9-1 Painting to a transparency layer

void MyDrawTransparencyLayer(CGContext myContext,floatwd,floatht)

{

CGSize myShadowOffset = CGSizeMake (10,-20);

CGContextSetShadow (myContext, myShadowOffset,10);

CGContextBeginTransparencyLayer (myContext,NULL);

// Your drawing code here

CGContextSetRGBFillColor (myContext,0,1,0,1);

CGContextFillRect (myContext, CGRectMake (wd/3+50,ht/2,wd/4,ht/4));

CGContextSetRGBFillColor (myContext,0,0,1,1);

CGContextFillRect (myContext, CGRectMake (wd/3-50,ht/2-100,wd/4,ht/4));

CGContextSetRGBFillColor (myContext,1,0,0,1);

CGContextFillRect (myContext, CGRectMake (wd/3,ht/2-50,wd/4,ht/4));

CGContextEndTransparencyLayer (myContext);

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末双肤,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子钮惠,更是在濱河造成了極大的恐慌茅糜,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,635評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件素挽,死亡現(xiàn)場(chǎng)離奇詭異蔑赘,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)预明,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門缩赛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人撰糠,你說(shuō)我怎么就攤上這事酥馍。” “怎么了阅酪?”我有些...
    開封第一講書人閱讀 168,083評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵旨袒,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我遮斥,道長(zhǎng)峦失,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,640評(píng)論 1 296
  • 正文 為了忘掉前任术吗,我火速辦了婚禮尉辑,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘较屿。我一直安慰自己隧魄,他們只是感情好卓练,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著购啄,像睡著了一般襟企。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上狮含,一...
    開封第一講書人閱讀 52,262評(píng)論 1 308
  • 那天顽悼,我揣著相機(jī)與錄音,去河邊找鬼几迄。 笑死蔚龙,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的映胁。 我是一名探鬼主播木羹,決...
    沈念sama閱讀 40,833評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼解孙!你這毒婦竟也來(lái)了坑填?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,736評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤弛姜,失蹤者是張志新(化名)和其女友劉穎脐瑰,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體娱据,經(jīng)...
    沈念sama閱讀 46,280評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蚪黑,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了中剩。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,503評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡抒寂,死狀恐怖结啼,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情屈芜,我是刑警寧澤郊愧,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站井佑,受9級(jí)特大地震影響属铁,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜躬翁,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評(píng)論 3 333
  • 文/蒙蒙 一焦蘑、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧盒发,春花似錦例嘱、人聲如沸狡逢。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)奢浑。三九已至,卻和暖如春腋腮,著一層夾襖步出監(jiān)牢的瞬間雀彼,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工即寡, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留详羡,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,909評(píng)論 3 376
  • 正文 我出身青樓嘿悬,卻偏偏與公主長(zhǎng)得像实柠,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子善涨,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評(píng)論 2 359

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

  • 本文轉(zhuǎn)載自:http://southpeak.github.io/2015/01/08/quartz2d-12/ ...
    idiot_lin閱讀 351評(píng)論 0 1
  • 本文轉(zhuǎn)載自:http://southpeak.github.io/2015/01/05/quartz2d-11/ ...
    idiot_lin閱讀 920評(píng)論 1 1
  • 【原文】 佛告須菩提:“諸菩薩摩訶薩①窒盐,應(yīng)如是降伏其心:所有一切眾生之類,若卵生钢拧,若胎生蟹漓,若濕生,若化生源内,若有色葡粒,...
    劉小勝閱讀 423評(píng)論 0 2
  • 周末無(wú)事,整理?yè)Q季衣服的時(shí)候把衣柜子里的一個(gè)包包翻出來(lái)了 膜钓,看到它的時(shí)候心里有點(diǎn)吃驚嗽交,它原本明亮橙黃散發(fā)著真皮的光...
    露露走閱讀 151評(píng)論 3 2
  • 昆明梁艷分享142天。網(wǎng)課初級(jí)五期颂斜。2017.10.06 今天在朋友圈看到這句話“陪伴夫壁,從來(lái)就不是‘時(shí)間’問(wèn)...
    詩(shī)心小鹿閱讀 144評(píng)論 0 1