繪製曲線 Quartz 2D

2021-07-02 20:43:57 字數 1914 閱讀 8175

quartz 2d提供了cgcontextaddcurvetopoint()和cgcontextaddquadcurvetopoint()兩個函式向cgcontextref的當前路徑上新增曲線,前者用於新增貝塞爾曲線,後者用於新增二次曲線。

繪製貝塞爾曲線的示意圖如圖12.10所示。從圖12.10可以看出,確定一條貝塞爾曲線需要4個點:開始點、第乙個控制點、第二個控制點和結束點。

cgcontextaddcurvetopoint(cgcontextref c, float cpx1, float cpy1, float cpx2, float cpy2, float x, float y)方法則負責繪製從路徑的當前點(作為開始點)到結束點(x、y)的貝塞爾曲線,其中,cpx1、cpy1定義第乙個控制點的座標;cpx2、cpy2定義第二個控制點的座標。

繪製二次曲線的示意圖如圖12.11所示。

從圖12.11可以看出,確定一條二次曲線需要三個點:開始點、控制點和結束點。

cgcontextaddquadcurvetopoint(cgcontextref c, float cpx, float cpy, float x, float y)方法則負責繪製從路徑的當前點(作為開始點)到結束點(x、y)的二次曲線,其中,cpx、cpy定義控制點的座標。

下面的程式使用了cgcontextaddquadcurvetopoint()函式方法繪製多條相連的曲線,這樣就可新增花朵形狀的路徑。將下面的函式新增到fkcontext.h函式庫中,方便以後復用。新增花朵路徑的函式**如下。

程式清單:codes/12/12.2/curvetest/curvetest/fkcontext.h

/*  

該方法負責繪製花朵。  

n:該引數控制花朵的花瓣數;dx、dy:控制花朵的位置;size:控制花朵的大小;  

length:控制花瓣的長度  

*/  

void cgcontextaddflower(cgcontextref c , nsinteger n  

, cgfloat dx , cgfloat dy , cgfloat size , cgfloat length)  

上面的粗體字**每次都會計算二次曲線結束點、控制點的座標,然後呼叫cgcontext addquadcurvetopoint()函式,即可新增二次曲線路徑。程式採用迴圈控制繪製多條前後相連的曲線,這樣即可形成花瓣。

例項:使用曲線繪製多瓣花朵

下面是該fkcurveview類的實現**。

程式清單:codes/12/12.2/curvetest/curvetest/ fkcurveview.m

#import "fkcurveview.h"  

#import "fkcontext.h"  

@implementation fkcurveview  

- (void)drawrect:(cgrect)rect  

@end 

程式中的三行粗體字**分別新增5瓣花朵路徑、6瓣花朵路徑、7瓣花朵路徑,然後使用不同的顏色來填充這些路徑。注意到上面的程式並未在每次新增花朵路徑後立即關閉,這也是允許的,而且每次填充路徑時並不會再次填充前一次已經填充過的路徑。這是因為只用程式繪製了cgcontextref當前所包含的路徑,系統會自動清除已經繪製的路徑。

每次繪製完成後,cgcontextref會自動清除已經繪製完成的路徑。

編譯、執行該程式,可以看到如圖12.12所示的花朵。

Quartz 2D學習(二)繪製曲線

quartz 2d是乙個二維圖形繪製引擎,它支援ios環境和mac os x環境,為開發者提供了很多方便,它在繪圖上的功能十分強大,如基於路徑的繪圖 透明度 陰影 顏色管理 反鋸齒 pdf文件生成等。quartz 2d作為core graphics框架的一部分,其中的很多資料型別和方法都是以cg為字...

iOS上使用Quartz 2D繪製Bitmap

quartz 2d是乙個二維繪圖引擎,可以在ios和mac os x中使用 不包括核心 quartz中所有物件都被繪製到圖形上下文中,包括位圖圖形上下文 cgbitmapcontext pdf圖形上下文 cgpdfcontext 視窗圖形上下文 僅mac os x可用 分層上下文 cglayer 列...

Quartz2D補充加強

quartz2d補充加強 知識點回顧 知識點補充 了解 ios上有幾種上下文 quartz2d提供了以下幾種型別的graphics context bitmap graphics context pdf graphics context pdf上下文 window graphics context ...