怎樣用CoreGraphics實現一個簡單的繪圖應用

今天就跟大家聊聊有關怎樣用CoreGraphics實現一個簡單的繪圖應用,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

創新互聯建站是專業的蕉城網站建設公司,蕉城接單;提供成都網站設計、做網站,網頁設計,網站設計,建網站,PHP網站建設等專業做網站服務;采用PHP框架,可快速的進行蕉城網站開發網頁制作和功能擴展;專業做搜索引擎喜愛的網站,專業的做網站團隊,希望更多企業前來合作!

有時候用CAShapeLayer或者其他矢量圖形圖層替代CoreGraphics并不是那么切實可行。比如我們的繪圖應用:我們用線條完美地完成了矢量繪制。但是設想一下如果我們能進一步提高應用的性能,讓它就像一個黑板一樣工作,然后用『粉筆』來繪制線條。模擬粉筆最簡單的方法就是用一個『線刷』圖片然后將它粘貼到用戶手指碰觸的地方,但是這個方法用CAShapeLayer沒辦法實現。

怎樣用CoreGraphics實現一個簡單的繪圖應用

我們可以給每個『線刷』創建一個獨立的圖層,但是實現起來有很大的問題。屏幕上允許同時出現圖層上線數量大約是幾百,那樣我們很快就會超出的。這種情況下我們沒什么辦法,就用CoreGraphics吧(除非你想用OpenGL做一些更復雜的事情)。

我們的『黑板』應用的最初實現,我們更改了之前版本的DrawingView,用一個畫刷位置的數組代替UIBezierPath。

幀率和線條質量會隨時間下降

為了減少不必要的繪制,MacOS和iOS設備將會把屏幕區分為需要重繪的區域和不需要重繪的區域。那些需要重繪的部分被稱作『臟區域』。在實際應用中,鑒于非矩形區域邊界裁剪和混合的復雜性,通常會區分出包含指定視圖的矩形位置,而這個位置就是『臟矩形』。

當一個視圖被改動過了,TA可能需要重繪。但是很多情況下,只是這個視圖的一部分被改變了,所以重繪整個寄宿圖就太浪費了。但是CoreAnimation通常并不了解你的自定義繪圖代碼,它也不能自己計算出臟區域的位置。然而,你的確可以提供這些信息。

當你檢測到指定視圖或圖層的指定部分需要被重繪,你直接調用-setNeedsDisplayInRect:來標記它,然后將影響到的矩形作為參數傳入。這樣就會在一次視圖刷新時調用視圖的-drawRect:(或圖層代理的-drawLayer:inContext:方法)。

傳入-drawLayer:inContext:的CGContext參數會自動被裁切以適應對應的矩形。為了確定矩形的尺寸大小,你可以用CGContextGetClipBoundingBox()方法來從上下文獲得大小。調用-drawRect()會更簡單,因為CGRect會作為參數直接傳入。

你應該將你的繪制工作限制在這個矩形中。任何在此區域之外的繪制都將被自動無視,但是這樣CPU花在計算和拋棄上的時間就浪費了,實在是太不值得了。

相比依賴于CoreGraphics為你重繪,裁剪出自己的繪制區域可能會讓你避免不必要的操作。那就是說,如果你的裁剪邏輯相當復雜,那還是讓CoreGraphics來代勞吧,記住:當你能高效完成的時候才這樣做。

看完上述內容,你們對怎樣用CoreGraphics實現一個簡單的繪圖應用有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注創新互聯行業資訊頻道,感謝大家的支持。

當前標題:怎樣用CoreGraphics實現一個簡單的繪圖應用
文章分享:http://m.kartarina.com/article6/jedsog.html

成都網站建設公司_創新互聯,為您提供網站收錄網站建設外貿建站微信公眾號網站設計全網營銷推廣

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

商城網站建設
主站蜘蛛池模板: 国产成人无码午夜福利软件| 久久久久亚洲AV成人无码| 99热门精品一区二区三区无码 | 亚洲一级特黄无码片| 粉嫩大学生无套内射无码卡视频| 无码精品一区二区三区免费视频| 亚洲AV无码一区二区三区性色 | 久久久久成人精品无码| 免费A级毛片av无码| YY111111少妇无码理论片| 人妻少妇看A偷人无码电影| 久久久久亚洲精品无码网址| av无码免费一区二区三区| 亚洲AV无码久久| 一区二区三区人妻无码| 日韩电影无码A不卡| 色窝窝无码一区二区三区| 亚洲精品无码专区久久同性男| 久热中文字幕无码视频| 国产V亚洲V天堂无码久久久| 成人无码精品一区二区三区| 亚洲av无码不卡久久| 亚洲AV区无码字幕中文色| 国产成人无码AV一区二区在线观看| 亚洲AV永久无码精品一福利| 亚洲精品无码久久久久久久 | 国产丰满乱子伦无码专| 日韩精品无码免费一区二区三区 | 亚洲AV无码一区二区三区牲色| 亚洲国产精品无码AAA片| 亚洲大尺度无码专区尤物| 久久av高潮av无码av喷吹| 人妻老妇乱子伦精品无码专区| 无码被窝影院午夜看片爽爽jk| 无码人妻精品一区二区三区蜜桃| 精品无码一区在线观看| 伊人久久精品无码麻豆一区| 无码av免费毛片一区二区| 无码任你躁久久久久久老妇App | 精品无码久久久久久尤物 | 亚洲AV无码一区二区三区人|