Quartz 2D 之Shadows

不知道怎么學習Quartz 2D 索性就全部翻譯一遍,總結下demo,用的時候再結合大神的翻譯思路等等。中間因為實現播放器連播與防護鎖的問題,學習暫停了,繼續學習Quartz 2D之陰影。

陰影就像一個圖像被繪制在下面,并且有偏移量。就像一束光投射到圖像上形成的。陰影可以使一個圖像出現三維或者它看起來像是浮動的。

陰影有三個參數:X 軸偏移量 ,Y軸偏移量? ,模糊值。模糊值指定了圖像是否有明顯的邊緣或者是淡化的邊緣。


? How Shadows Work 如何工作

陰影是圖形狀態的一部分,你可以調用方法CGContextSetShadow,傳入一個上下文,偏移量以及模糊值。設置完后,陰影被繪制采用RGBA 這個方法默認透明度為 {0, 0, 0, 1.0/3.0}.你也可以調用方法CGContextSetShadowWithColor,多提供一個CGColor的對象作為參數。

在你調用CGContextSetShadow or CGContextSetShadowWithColor之前保存了圖形狀態,你可以通過恢復圖形狀態來關閉陰影。當你設置shadow color 為NULL時也就關閉了陰影。

Shadow Drawing Conventions Vary Based on the Context? 基于上下文的陰影繪制約定

先前描述的偏移量指定了投射到圖像上的陰影與 圖像的位置關系。上下文解釋了偏移量,偏移量也被用來計算陰影的位置:

??? ?? 一個正的偏移量表示陰影在圖像對象的右邊

??? ??在Mac OS X 中,一個正向Y 偏移表示向上偏移,這與Quartz 2D 的默認坐標系統是匹配的

??? ??在iOS中,假如你的應用使用Quartz 2D創建PDF 或者位圖上下文,一個正向Y 偏移表示向上偏移

??? ??在iOS中,假如你的應用上下文是通過UIKit 創建的,比如調用UIGraphicsBeginImageContextWithOptions,表示正向Y偏移是向下的。這和UIKit 的坐標系統是匹配的。

陰影繪制約定不會被當前轉換矩陣影響。

Painting with Shadows? 使用引用進行繪制

按照這些步驟來繪制陰影:

?1. 保存圖形狀態

2.調用方法 CGContextSetShaw,傳入合適的參數

3.完成你想繪制的陰影繪制

4. 恢復圖形狀態

按照這些步驟來繪制彩色的陰影:

1. 保存圖形狀態

2.創建一個CGColorSpace 對象以確保Quartz 能正確解釋陰影色值

3.創建一個CGColor對象來指定你繪制陰影所需要的顏色

4.調用方法 CGContextSetShadowWithColor ,傳入合適的參數

5.完成繪制

6.恢復圖形狀態


Listing 7-1 一個完整的方法設置 陰影


? demo地址:Quartz 2D 模式之demo



最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • --繪圖與濾鏡全面解析 概述 在iOS中可以很容易的開發出絢麗的界面效果,一方面得益于成功系統的設計,另一方面得益...
    韓七夏閱讀 2,767評論 2 10
  • Quartz 2D是一個二維繪圖引擎,可在iOS環境中和內核之外的所有Mac OS X應用程序環境中訪問。您可以使...
    權宜平和閱讀 518評論 0 0
  • 在Mac OS X中,Quartz 2D可以處理所有的圖形和圖形技術---Core Image,Core Vid...
    雪_晟閱讀 500評論 0 4
  • 無論怎樣飛 飛過多遠的秋天 飛成鳥或鳥們 在人們的眼里 我始終都是一群鳥或 一只鳥那樣的 鳥樣子
    勒尤閱讀 192評論 0 0
  • 百度上說,微信 手機端為主 推崇小而精 內容比較精煉。微信上說,拍一張照片 開啟記錄你的生活。對啊,相比QQ 微信...
    衛木閱讀 620評論 0 0