CoreGrapics總結(jié)(1)

(繪圖方法有UIkit框架下的和Core Graphics)

1上下文 在iOS總的到上下文的有3個地方drawRect:

2.drawLayer:(CALayer*)layer inContent:(CGContextref)ctx

3.自己獲取到上下文UIGraphicsBeginImageContect()(主要用于圖片處理)

————————1Core Graphics

畫圖形:基于點的 1.路徑 CGContextMoveToPoint CGContextAddLineToPoint...

2 花一個矩形CGContextAddRect......

3.畫橢圓CGContextAddEllipseInRect

3畫弧形CGContextAddArcToPoint

4j基于貝塞爾曲線 CGContextAddQuadCurveToPoint CGContextAddCurveToPoint

創(chuàng)建路徑

二.繪制路徑1.(分開畫路徑和填充操作)如基于3個點可以調(diào)用CGContextClosePath(會在起點和終點追加一條線注意后面還要調(diào)用CGContextStrokePath)

2描邊或填充CGContextStokePath CGContextFillPath CGContextEOFillPath CGContextDrawPath(此函數(shù)會自動描邊加填充)

2.描邊繪制或填充一體的函數(shù)CGContextStrokeRect(矩形并且描邊) CGContextStrokeRectWithRect 2.CGContextFillRect(填充)后面還有橢圓

3.注意里面還有一個CGContextClearRect(抹去一個區(qū)域并且裁剪像一個空洞)這個函數(shù)裁剪出留下的空白區(qū)域的效果 主要影響是上下文透明還是不透明 如果背景色為空或者alpha不是1出來的都是透明的背景色 否則是黑塊

三 上面基于路徑的繪制 還可以喲CGPath來構(gòu)建路徑(有幾個優(yōu)點 如果一段路徑要重用或共享 或者對路徑有一些形變因為有一個CGAfiineTransform屬性)

四.畫圖片

對于以一個函數(shù) 他會自動重復(fù)繪制

第二個CGContextDrawImage才正常繪制

…….但是在繪制回來我們發(fā)現(xiàn)圖片顛倒了(因為本地坐標(biāo)原點默認(rèn)在左上角 二上下文的坐標(biāo)原點在左下角 不匹配造成)

2.UIKit

1….如UIImage NSString UIBezierPath.UIColor那些讀有自己的繪制方法比如UIImage

drawAtPoint….(貝塞爾曲線下面講)

2.UIBeizerPath 1.自己自定義路徑創(chuàng)建貝塞爾曲線用+(instancetype)bezierPath

填充或描邊對應(yīng)的方法 stroke fill (closePath)也會

在起點和終點追加一條線

2.2我們主要看二階和三階的貝塞爾曲線

2.2.1三階的 在Core Graphics中也有添加添加貝塞爾曲線

-addCurvePoint:controlPoint1:controlPoint2

里面有兩個控制點一個起點和一個終點

用MoveToPoint設(shè)置一個起點

2.2.2二階

addQuadCureToPoint...

繪制虛線

setLineDash:count:phase

3 用UIKit的UIGraphicsBeginImageContentWithOptions(主要用于圖片的處理)

3.1圖片的平移

注意里面兩個參數(shù)第er個是透明 如果我們傳入yes的話是透明的沒有任何效果等于空白所有傳no

..第3個是圖片的縮放比例(0-1);

3.2圖片的縮放

(里面對于底部圖片放大了..對于方法里面一個CGBlendModel是混合的樣式)

里面宏主要有下面的種類

KCGBlendModelNormal

KCGBlendModelMultiply

KCGBlendModelScreen

KCGBlendModelOverlay

KCGBlendModelDarken

KCGBlendModelLighten

KCGBlendModelColorBurn

KCGBlendModelSortLight

KCGBlendModelHardLight

KCGBlendModelDifference

KCGBlendMdoelExclusion

KCGBlendModelHue

KCGBlendModelSaturation

KCGBlendModelColor

KCGBlendMdoelLuminosity

……..

Normal

Mutiply

Screen

Overlay…….

下面列出了部分的效果圖

這些都是處理重疊部分的樣式

3.3圖片的裁剪(因為UIimage沒有提供截圖指定區(qū)域的功能 ?我們采用的方式是 創(chuàng)建一個較小的圖形上下文 并且把圖片移動到上下文中 指定區(qū)域的圖片就會被獲取)

當(dāng)然上面是我們只是截取一左邊部分 如果截取右半部分的話我們只需要把起點坐標(biāo)位置設(shè)置成負(fù)的(這是通過操作上下文)

3.3.2我們通過操作圖片來裁剪(前面說到了UIimage辦不到 所有我們用CGImage 他可以獲取原始圖片中指定區(qū)域的圖片然后我們轉(zhuǎn)成UIImage)

我們這邊處理下圖片倒置的問題 第一個函數(shù)是改變坐標(biāo)的起點

今天我們就分享這些吧后面還有很多繼續(xù)哦(*^__^*) 嘻嘻……

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • --繪圖與濾鏡全面解析 概述 在iOS中可以很容易的開發(fā)出絢麗的界面效果,一方面得益于成功系統(tǒng)的設(shè)計,另一方面得益...
    韓七夏閱讀 2,981評論 2 10
  • Core Graphics Framework是一套基于C的API框架,使用了Quartz作為繪圖引擎。它提供了低...
    ShanJiJi閱讀 1,731評論 0 20
  • Quartz2D以及drawRect的重繪機制字?jǐn)?shù)1487 閱讀21 評論1 喜歡1一、什么是Quartz2D Q...
    PurpleWind閱讀 923評論 0 3
  • 今天是10月10號,日子不錯,天氣不太好哦,整整一天都是淅瀝瀝的小雨,煙臺的妖風(fēng)又開始作孽了。不過我還年輕啊,身...
    正小心閱讀 188評論 0 0
  • 夜深人靜,酣夢初醒。 空蕩蕩的房間,縈繞著你熟悉的聲音。不知從何時起,你這樣毫無征兆的闖入我的生活。不知從何時起,...
    顧知涯閱讀 682評論 12 9

友情鏈接更多精彩內(nèi)容