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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

(四十七)Quartz2D引擎初步

發(fā)布時間:2023/11/27 生活经验 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 (四十七)Quartz2D引擎初步 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Quartz2D是跨平臺的,同時支持iOS與Mac。

支持圓型裁剪,可以實現(xiàn)圓形頭像等功能,也支持手勢解鎖、折線圖等的制作。

對于復(fù)雜的UI界面,還可以通過Quartz2D將控件內(nèi)部的結(jié)構(gòu)畫出來,可用于自定義控件。

實際上iOS大部分控件都是通過Quartz2D畫出來的,一個重要價值是自定義view。


一些基礎(chǔ)概念:

1.圖形上下文(Graphics Context):是CGContextRef類型數(shù)據(jù)

能保存繪圖信息、繪圖狀態(tài),決定繪制的輸出目標(biāo),可以輸出到文件或者窗口。

繪制好的圖像先保存到圖形上下文,再顯示到輸出目標(biāo)。

Tip:相同的圖像,經(jīng)過不同的圖形上下文,就可以顯示到不同的地方。

Quartz2D支持的類型:Bitmap、PDF、Window、Layer、Printer.


2.自定義view

擁有圖形上下文,并且與view有關(guān)。

步驟:

1.新建一個類,繼承自UIView。

2.實現(xiàn)drawRect: rect方法畫圖。


3.須知:

1.后面繪制的部分覆蓋前面繪制的部分。

2.Quartz2D的API是純C代碼。

3.Quartz2D來自CoreGraphics框架。

4.數(shù)據(jù)類型和函數(shù)基本都是以CG開頭。


重寫UIView的drawRect方法,可以繪制圖形,繪制直線的方法:

1.繪制直線

以CGContext開頭的,MoveToPoint、AddLineToPoint以及StrokePath方法

Tip:如果要畫獨立的直線,只要多次使用MoveToPoint即可。

Tip:drawRect函數(shù)在View第一次顯示到屏幕上的時候會調(diào)用一次,重繪時也會調(diào)用一次。

- (void)drawRect:(CGRect)rect {// 1.獲得圖形上下文CGContextRef ctx = UIGraphicsGetCurrentContext();// 2.拼接圖形(路徑)// 2.1設(shè)定起點CGContextMoveToPoint(ctx, 10, 10);// 2.2添加一條線從起點到(100,100)CGContextAddLineToPoint(ctx, 100, 100);// 2.3從上次終點繼續(xù)繪制CGContextAddLineToPoint(ctx, 150, 40);// 2.4回到起點,關(guān)閉路徑CGContextAddLineToPoint(ctx, 10, 10);// 3.渲染顯示到view上,stroke是空心的形式。CGContextStrokePath(ctx);}


2.繪制矩形:

CGContextAddRect(ctx, CGRectMake(10, 10, 100, 100));

Tip:Stroke方法畫的是空心圖形,將Stroke換為Fill可得到填充圖形。


3.設(shè)置狀態(tài)的代碼(顏色、粗細(xì)):

Tip:設(shè)置狀態(tài)的代碼一定要放在渲染的前面,放在繪制函數(shù)的前后都可以。

3.1設(shè)置線寬:

CGContextSetLineWidth(ctx, 10);
3.2設(shè)置顏色:有Stroke和Fill兩種方式,注意小數(shù)是 x / 255.0。

CGContextSetRGBStrokeColor(ctx, 255/255.0, 125/255.0, 0.0, 1.0)
Tip:狀態(tài)只在渲染的時候確定,因此多個狀態(tài)不同的內(nèi)容應(yīng)該渲染多次。

3.3線段頭尾樣式(圓形):三中,Miter是默認(rèn)的發(fā)射狀(方形)、Round為圓形、Bevel為裁剪。

CGContextSetLineCap(ctx, kCGLineCapRound);
連接點樣式:

CGContextSetLineJoin(ctx, kCGLineJoinRound);

Tip:如果使用多次渲染,那么之前繪制的路徑尾就無法繼續(xù)使用了,應(yīng)該重新確立起點。

Tip:CMYK是印刷色彩顏色,由青、品紅、黃、黑構(gòu)成,RGB由紅綠藍(lán)構(gòu)成。

設(shè)置顏色的一個簡便方法:

使用UIColor對象的setStroke與setFill方法:如果寫set則是全部設(shè)置。

[[UIColor redColor] setStroke];

4.繪制圓和橢圓:通過外接矩形確定。

    // 圓形CGContextAddEllipseInRect(ctx, CGRectMake(10, 10, 60, 60));// 橢圓CGContextAddEllipseInRect(ctx, CGRectMake(100, 100, 100, 50));

5.繪制圓弧:

/***  繪制圓弧**  @param c#>          圖形上下文 description#>*  @param x#>          圓心x description#>*  @param y#>          圓心y description#>*  @param radius#>     半徑 description#>*  @param startAngle#> 起始角度 description#>*  @param endAngle#>   結(jié)束角度 description#>*  @param clockwise#>  圓弧生長方向 0順 1逆 description#>**/CGContextAddArc(<#CGContextRef c#>, <#CGFloat x#>, <#CGFloat y#>, <#CGFloat radius#>, <#CGFloat startAngle#>, <#CGFloat endAngle#>, <#int clockwise#>);

需要注意的是角度為弧度,應(yīng)該通過系統(tǒng)的宏來換算:M_PI_2表示二分之PI,M_1_PI表示0.1PI。

另外注意一點這里的角度和數(shù)學(xué)定義不同,順時針為正角度,逆時針為負(fù)角度


6.圖片和文字結(jié)合:

Tip:Quartz2D的坐標(biāo)系和數(shù)學(xué)上一致,但是UIKit框架做了轉(zhuǎn)換,和屏幕坐標(biāo)系一致都是左上角為(0,0),因此使用純C語言繪制出來的東西是倒著的。

利用OC來繪制字符串不需要調(diào)用和上下文:

NSString *str = @"一段文字";
[str drawAtPoint:CGPointMake(0, 0) withAttributes:nil];
想把文字放到矩形框內(nèi),使用drawInRect,還可以自動換行。

withAttributes是對狀態(tài)的設(shè)置,注意要傳入字典。

參數(shù)已經(jīng)定義成字符串常量:

NSMutableDictionary *attrs = [NSMutableDictionary dictionary];
attrs[NSForegroundColorAttributeName] = [UIColor whiteColor];
[str drawAtPoint:CGPointMake(0, 0) withAttributes:attrs];
常見的屬性:

NSForegroundColorAttributeName為文字顏色。
NSFontAttributeName為字體。


圖片的繪制:

直接繪制:

[UIImage imageNamed:@"me"];
[image drawInRect:CGRectMake(0, 0, 150, 150)];

平鋪:

[UIImage imageNamed:@"me"];
[image drawAsPatternInRect:CGRectMake(0, 0, 150, 150)];




轉(zhuǎn)載于:https://www.cnblogs.com/aiwz/p/6154204.html

總結(jié)

以上是生活随笔為你收集整理的(四十七)Quartz2D引擎初步的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 狠狠综合网| 色多多导航 | 亚洲精品国产精品乱码不卡 | 91最新在线 | 最新国产拍偷乱偷精品 | 尤物网址在线观看 | 免看一级a毛片一片成人不卡 | 国家队动漫免费观看在线观看晨光 | 国产毛片久久久久 | 欧美另类高清 | 香蕉成人在线视频 | 日韩欧美精品一区 | 亚洲午夜18毛片在线看 | 男人天堂a在线 | 日本不卡一区在线 | 欧美性生活一区 | 人妻大战黑人白浆狂泄 | 饥渴丰满的少妇喷潮 | 精品九九视频 | 秋霞av鲁丝片一区二区 | 91国产在线免费观看 | 国产欧美日韩综合精品一区二区三区 | av最新天堂 | 国产精品jizz在线观看软件 | 成人午夜视频一区二区播放 | 欧美69精品久久久久久不卡 | 精品国产户外野外 | 黄色国产一级 | 久久久久久中文字幕 | 女人被男人躁得好爽免费视频 | 欧美成人高潮一二区在线看 | 97在线免费视频 | 国产亚洲片 | 草莓视频一区二区三区 | 在线成人国产 | 欧美极品少妇xxxxⅹ喷水 | 欧美三级午夜理伦三级中视频 | 欧美高清性xxxxhdvideosex | 亚洲激情视频网 | 国产成人无码一二三区视频 | 亚洲黄色小说视频 | 精品国产一区二区三区久久狼黑人 | 中文字幕乱码中文乱码b站 国产一区二区三区在线观看视频 | 亚洲羞羞| 美女在线不卡 | 久久精品国产99久久 | 国产区高清 | 精品三级在线观看 | 久久99精品久久只有精品 | 国产福利合集 | 欧美激情爱爱 | 秋霞免费av | 亚洲人xxx日本人18 | 蜜臀av夜夜澡人人爽人人 | 中文精品无码中文字幕无码专区 | 啪视频在线观看 | 韩国美女av | 欧美极品在线观看 | 男女网站在线观看 | 久久久久久久久福利 | 中文字幕在线观看一区二区 | 色哟哟欧美精品 | 国产精品伦一区二区三区 | 精品无码av一区二区三区 | 欧美激情一二三区 | 午夜在线视频免费观看 | 99久久婷婷国产综合精品 | 国产毛片一区二区三区 | av噜噜| 久久久久久98 | 成人毛片在线精品国产 | 97中文在线| 亚洲一区免费视频 | 欧日韩在线视频 | 熟女毛毛多熟妇人妻aⅴ在线毛片 | 国内一级视频 | 国产成人91| 日本伦理一区二区 | 国产第一av | 日韩欧美有码 | 毛片基地站| 老色批av | 黄色小视频在线 | av在线资源 | 婷婷国产在线 | 兄弟兄弟全集免费观看 | 久久久久亚洲av无码专区首jn | 什么网站可以看毛片 | 对白刺激theporn | 国产喷白浆一区二区三区 | 欧美三区视频 | 国产观看 | 午夜在线看片 | 黄色一级片. | 欧美黄页 | 男女超爽视频免费播放 | 亚洲视频导航 | 亚洲国产日韩在线 | 理想之城连续剧40集免费播放 |