CoreGrapics总结(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

创建路径

二.绘制路径1.(分开画路径和填充操作)如基于3个点可以调用CGContextClosePath(会在起点和终点追加一条线注意后面还要调用CGContextStrokePath)

2描边或填充CGContextStokePath CGContextFillPath CGContextEOFillPath CGContextDrawPath(此函数会自动描边加填充)

2.描边绘制或填充一体的函数CGContextStrokeRect(矩形并且描边) CGContextStrokeRectWithRect 2.CGContextFillRect(填充)后面还有椭圆

3.注意里面还有一个CGContextClearRect(抹去一个区域并且裁剪像一个空洞)这个函数裁剪出留下的空白区域的效果 主要影响是上下文透明还是不透明 如果背景色为空或者alpha不是1出来的都是透明的背景色 否则是黑块

三 上面基于路径的绘制 还可以哟CGPath来构建路径(有几个优点 如果一段路径要重用或共享 或者对路径有一些形变因为有一个CGAfiineTransform属性)

四.画图片

对于以一个函数 他会自动重复绘制

第二个CGContextDrawImage才正常绘制

…….但是在绘制回来我们发现图片颠倒了(因为本地坐标原点默认在左上角 二上下文的坐标原点在左下角 不匹配造成)

2.UIKit

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

drawAtPoint….(贝塞尔曲线下面讲)

2.UIBeizerPath 1.自己自定义路径创建贝塞尔曲线用+(instancetype)bezierPath

填充或描边对应的方法 stroke fill (closePath)也会

在起点和终点追加一条线

2.2我们主要看二阶和三阶的贝塞尔曲线

2.2.1三阶的 在Core Graphics中也有添加添加贝塞尔曲线

-addCurvePoint:controlPoint1:controlPoint2

里面有两个控制点一个起点和一个终点

用MoveToPoint设置一个起点

2.2.2二阶

addQuadCureToPoint...

绘制虚线

setLineDash:count:phase

3 用UIKit的UIGraphicsBeginImageContentWithOptions(主要用于图片的处理)

3.1图片的平移

注意里面两个参数第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没有提供截图指定区域的功能  我们采用的方式是 创建一个较小的图形上下文 并且把图片移动到上下文中 指定区域的图片就会被获取)

当然上面是我们只是截取一左边部分 如果截取右半部分的话我们只需要把起点坐标位置设置成负的(这是通过操作上下文)

3.3.2我们通过操作图片来裁剪(前面说到了UIimage办不到 所有我们用CGImage 他可以获取原始图片中指定区域的图片然后我们转成UIImage)

我们这边处理下图片倒置的问题 第一个函数是改变坐标的起点

今天我们就分享这些吧后面还有很多继续哦(*^__^*) 嘻嘻……

你可能感兴趣的:(CoreGrapics总结(1))