UIKit和Core Graphics绘图——字符串,线条,矩形,渐变
来源:互联网 发布:1080a最新x站免费域名 编辑:程序博客网 时间:2024/05/22 05:11
转自:http://blog.csdn.net/cocoarannie/article/details/9990411
概述
CoreGraphics也称为Quartz 2D 是UIKit下的主要绘图系统,频繁的用于绘制自定义视图。Core Graphics是高度集成于UIView和其他UIKit部分的。Core Graphics数据结构和函数可以通过前缀CG来识别。
视图可以通过子视图、图层或实现drawRect:方法来表现内容,如果说实现了drawRect:方法,那么最好就不要混用其他方法了,如图层和子视图。自定义绘图大部分是由UIKit或者Core Graphics来实现的。
2D绘图一般可以拆分成以下几个操作:
- 线条
- 路径
- 文本
- 图片
- 渐变
由于像素是依赖于目标的,所以2D绘图并不能操作单独的像素,我们可以从上下文(Context)读取它。
绘图就好比在画布上拿着画笔机械的进行画画,通过制定不同的参数来进行不同的绘制。
绘入字符串
调用NSString类里的实例方法drawAtPoint: withFont:方法可以进行绘制。
我们可以遍历设备支持的字体来随机选择一个,然后绘制到drawRect中。
效果
绘制图片
绘制图片方法类似于绘入字符串,调用UIImage的实例方法drawAtPoint:或者drawInRect:来实现对图片的绘制,前者是从某点开始绘制,而后一个方法是在制定的矩形内进行绘制,会进行适当的缩放。
画线
线的画法比较简单,首先获取当前上下文,然后调用其设置线的相关信息,例如线条的宽度,起始点和终点等。
效果如下
我们看到字的下面有了一条棕色的线。
连续绘制线条,并设置交界样式
上下文在绘制一条直线后会定格在刚才绘制的线的末端,这样我们可以再通过CGContextAddLineToPoint方法来设置立即进行下一条线的绘制。在线的交界处,我们可以设置交界的样式(CGLineJoin),这个枚举中有三种样式:
kCGLineJoinMiter——尖角
kCGLineJoinBevel——平角
kCGLineJoinRound——圆形
效果如下
我们也可以在绘制图像前和后来使用CGContextSaveGState(CGContextRef)和CGContextRestoreContext(CGContextRef)方法来保存和清除上下文的状态,这种实现类似于把相应内容推入栈中,然后调用Restore方法之后再全部推出,是上下文状态恢复到绘制之前。
绘制矩形
绘制完成后效果
然后可以调用CGContextFillRect(CGContextRef)方法来填充矩形
效果
绘制线性渐变效果
绘制渐变效果首相要创建一个CGGradientRef,创建它需要调用一个方法CGGradientRef CGGradientCreateWithColors(
CGColorSpaceRef space,
CFArrayRef colors,
const CGFloat locations[]
);
CGColorSpaceRef space,
CFArrayRef colors,
const CGFloat locations[]
);
需要一个色彩空间梯度,还有颜色的数组以及只读位置数组。
首先先把之前填充颜色的代码注释掉,然后开始绘制渐变。
效果如下
这时背景的渐变效果就出来了。
以上为本篇文章全部内容,欢迎指正和交流。转载注明出处~
0 0
- UIKit和Core Graphics绘图——字符串,线条,矩形,渐变
- UIKit和Core Graphics绘图——字符串,线条,矩形,渐变
- UIKit和Core Graphics绘图——字符串,线条,矩形,渐变
- UIKit和Core Graphics绘图——字符串,线条绘制
- UIKit和Core Graphics绘图——构造路径,阴影以及渐变扩展
- UIKit和Core Graphics绘图(二)——构造路径,阴影以及渐变扩展
- Core Graphics : 线,矩形和渐变效果
- UIKit和Core Graphics绘图——绘制虚线,椭圆以及饼图
- UIKit和Core Graphics绘图——绘制光泽,仿射变换与矩阵变换
- UIKit和Core Graphics绘图——绘制光泽,仿射变换与矩阵变换
- UIKit和Core Graphics绘图——绘制光泽,仿射变换与矩阵变换
- Core Graphics 101: 线,矩形和渐变效果
- Core Graphics 101: 线,矩形和渐变效果
- Core Graphics 101: 线,矩形和渐变效果
- UIKit与Core Graphics绘图技术详解
- iOS绘图系统UIKit与Core Graphics
- iOS绘图—— UIBezierPath 和 Core Graphics
- iOS绘图—— UIBezierPath 和 Core Graphics
- mybatis-generator 作为 gradle的一个task运行生成xml,dao,model
- 360 文档渲染ie7 兼容性解决 X-UA-Compatible
- Spring Task cron的表达式
- 虚函数与虚继承
- Git 常用命令总结
- UIKit和Core Graphics绘图——字符串,线条,矩形,渐变
- iOS最好用的引导页
- android-支持多种屏幕[设计替代布局和可绘制对象] 六
- 设计模式-11 迭代器模式
- java(六)字符串与equals
- 百度面经(实习)
- 微信端发消息时而成功时而失败并提示:该公众账号暂时无法提供服务,请稍后再试
- ACTION_CALL和ACTION_DIAL的区别
- python BM