日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Quartz 2D编程笔记

發布時間:2023/12/19 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Quartz 2D编程笔记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

當我們需要在一個圖形上下文中構建一個路徑時,我們需要調用CGContextBeginPath來標記Quartz。然后,我們調用函數CGContextMovePoint來設置每一個圖形或子路徑的起始點。在構建起始點后,我們可以添加直線、弧、曲線。記住如下規則:

  • 在開始繪制路徑前,調用函數CGContextBeginPath;
  • 直線、弧、曲線開始于當前點。空路徑沒有當前點;我們必須調用CGContextMoveToPoint來設置第一個子路徑的起始點,或者調用一個便利函數來隱式地完成該任務。
  • 如果要閉合當前子路徑,調用函數CGContextClosePath。隨后路徑將開始一個新的子路徑,即使我們不顯示設置一個新的起始點。
  • 當繪制弧時,Quartz將在當前點與弧的起始點間繪制一條直線。
  • 添加橢圓和矩形的Quartz程序將在路徑中添加新的閉合子路徑。
  • 我們必須調用繪制函數來填充或者描邊一條路徑,因為創建路徑時并不會繪制路徑。

在繪制路徑后,將清空圖形上下文。我們也許想保留路徑,特別是在繪制復雜場景時,我們需要反復使用。基于此,Quartz提供了兩個數據類型來創建可復用路徑—CGPathRef和CGMutablePathRef。我們可以調用函數CGPathCreateMutable來創建可變的CGPath對象,并可向該對象添加直線、弧、曲線和矩形。Quartz提供了一個類似于操作圖形上下文的CGPath的函數集合。這些路徑函數操作CGPath對象,而不是圖形上下文。這些函數包括:

  • CGPathCreateMutable,取代CGContextBeginPath
  • CGPathMoveToPoint,取代CGContextMoveToPoint
  • CGPathAddLineToPoint,取代CGContexAddLineToPoint
  • CGPathAddCurveToPoint,取代CGContexAddCurveToPoint
  • CGPathAddEllipseInRect,取代CGContexAddEllipseInRect
  • CGPathAddArc,取代CGContexAddArc
  • CGPathAddRect,取代CGContexAddRect
  • CGPathCloseSubpath,取代CGContexClosePath

如果想要添加一個路徑到圖形上下文,可以調用CGContextAddPath。路徑將保留在圖形上下文中,直到Quartz繪制它。我們可以調用CGContextAddPath再次添加路徑。

制路徑

路徑描的函數
Quartz提供了表3-4中的函數來描邊當前路徑。其中一些是描邊矩形及橢圓的便捷函數。
表3-4 描邊路徑函數

?

void CGContextSetLineDash

?

裁減圖形上下文的函數

?

?

混合模式指定了Quartz如何將繪圖繪制到背景上。Quartz默認使用普通混合模式(normal blend mode),該模式使用如下公式來計算前景繪圖與背景繪圖如何混合:


result = (alpha * foreground) + (1 - alpha) *background


“顏色與顏色空間”章節里面詳細討論了顏色值的alpha組件,該組件用于指定顏色的透明度。在本章的例子中,我們可以假設顏色值是完全不透明的(alpha = 0)。對于不透明的顏色值,當我們用普通混合模式時,所有繪制于背景之上的繪圖都會遮掩住背景。


我們可以調用函數CGContextSetBlendMode并傳遞適當的混合模式常量值來設置混合模式來達到我們想到的效果。記住混合模式是圖形狀態的一部分。如果調用了函數CGContextSaveGState來改變混合模式,則調用函數CGContextRestoreGState來重新設置混合模式為普通混合模式。

kCGBlendModeNormal

kCGBlendModeMultiply

kCGBlendModeScreen

kCGBlendModeOverlay

kCGBlendModeDarken

?

kCGBlendModeLighten

kCGBlendModeColorDodge

?

kCGBlendModeColorBurn

kCGBlendModeSoftLight

?

kCGBlendModeHardLight

kCGBlendModeDifference

?

kCGBlendModeExclusion

kCGBlendModeHue

kCGBlendModeSaturation

kCGBlendModeColor

?

kCGBlendModeLuminosity

轉載于:https://www.cnblogs.com/chinaxxren/p/3332271.html

總結

以上是生活随笔為你收集整理的Quartz 2D编程笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。