(繪圖方法有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ù)哦(*^__^*) 嘻嘻……