<图形图像,动画,多媒体> 读书笔记 --- UIKit,Quartz 2D
来源:互联网 发布:31周b超数据判断男女 编辑:程序博客网 时间:2024/05/16 19:35
在iOS中绘图技术主要包括:UIKit,Quartz 2D,CoreGraphics,OpenGL ES.
记录一些主要方法
UIImage
drawAtPoint:(CGPoint)point 设置描绘定点
drawInRect:(CGRect)rect,图片绘制在指定的图形里
drawAsPatternInRect:(CGRect)rect 在指定的矩形里平铺绘制图片,如果图片打小超出了指定的矩形,形式上与drawAtPoint方法类似,如果图片大小小于指定矩形,就会有平铺效果
NSString
- (void)drawAtPoint:(CGPoint)point withAttributes:(NSDictionary *)attrsNS_AVAILABLE_IOS(7_0);文本在指定的点绘制
- (void)drawInRect:(CGRect)rect withAttributes:(NSDictionary *)attrsNS_AVAILABLE_IOS(7_0);文本在指定的矩形里绘制
[[UIColor brownColor] setFill]; UIRectFill(rect);//填充颜色 [[UIColor whiteColor] setStroke]; CGRect frame = CGRectMake(20, 30, 100, 300); UIRectFrame(frame);//描边颜色NSString *imagePath = [[NSBundle mainBundle]pathForResource:@"1" ofType:@"jpg"]; UIImage *img = [UIImage imageWithContentsOfFile:imagePath]; [img drawInRect:CGRectMake(0, 40, 320, 400)];//画一个图 NSString *s = @"123"; UIFont *font = [UIFont systemFontOfSize:34]; NSDictionary *dict = @{NSFontAttributeName:font}; [s drawAtPoint:CGPointMake(100, 20) withAttributes:dict];//画一个字符串
Quartz 2D
CGContextRef context = UIGraphicsGetCurrentContext(); CGContextMoveToPoint(context, 75, 10);//在75,10绘制起始点 CGContextAddLineToPoint(context, 10, 150);//从(75,10)绘制到(10.150) CGContextAddLineToPoint(context, 160, 150);//从(10,150)绘制到(160, 150) CGContextClosePath(context);//闭合绘制 [[UIColor blackColor]setStroke]; [[UIColor redColor]setFill]; CGContextDrawPath(context, kCGPathFillStroke); /* enum CGPathDrawingMode { kCGPathFill, kCGPathEOFill, kCGPathStroke, kCGPathFillStroke, kCGPathEOFillStroke }; typedef enum CGPathDrawingMode CGPathDrawingMode; // mode :fill 把你的笔画路径也填充上 // mode :EOFill 把你的笔画路径围起来的部分给填充上 // mode :Stroke 把你的笔画路径给填充上 // mode :FillStroke 把你整个笔画路径围起来的区域给填充上 // mode :EOFillStroke 跟第二个很象,把笔画路径围起来的部分填充上,不包括笔画路径 */
贝塞尔曲线的一个方法介绍
/** * CGContextAddCurveToPoint(CGContextRef c, CGFloat cp1x, CGFloat cp1y, CGFloat cp2x, CGFloat cp2y, CGFloat x, CGFloat y) cp1x:第一控制点x坐标 cp1y:第一控制点y坐标 cp2x:第二控制点x坐标 cp2y:第二控制点y坐标 x:结束点x坐标 y:结束点y坐标 */ CGContextAddCurveToPoint(cgContext, 250, 19, 241, 24, 238, 19);
Quartz 坐标变换
坐标系
在苹果的2D图形技术是Quartz 2D 和UIKit,Quartz 2D是Mac OS X和iOS环境下的2D绘图引擎,涉及内容包括:基于路径的绘图,透明度绘图,遮盖,阴影,透明层,颜色管理,防锯齿渲染,生成PDF,以及PDF元数据相关处理.在iOS还可以通过UIKit进行图形绘制,但是Quartz 2D和UIKit坐标系不同.
NSString *path = [[NSBundle mainBundle]pathForResource:@"1" ofType:@"jpg"]; UIImage *img = [UIImage imageWithContentsOfFile:path]; CGImageRef image = img.CGImage; /* CGContextSaveGState与CGContextRestoreGState的作用 使用Quartz时涉及到一个图形上下文,其中图形上下文中包含一个保存过的图形状态堆栈。在Quartz创建图形上下文时,该堆栈是空的。CGContextSaveGState函数的作用是将当前图形状态推入堆栈。之后,您对图形状态所做的修改会影响随后的描画操作,但不影响存储在堆栈中的拷贝。在修改完成后,您可以通过CGContextRestoreGState函数把堆栈顶部的状态弹出,返回到之前的图形状态。这种推入和弹出的方式是回到之前图形状态的快速方法,避免逐个撤消所有的状态修改;这也是将某些状态(比如裁剪路径)恢复到原有设置的唯一方式。 */ CGContextRef context = UIGraphicsGetCurrentContext(); CGContextSaveGState(context); //转换坐标系 CGContextTranslateCTM(context, 0, img.size.height); CGContextScaleCTM(context, 1, -1); CGRect touchRect = CGRectMake(0, 0, img.size.width, img.size.height); CGContextDrawImage(context, touchRect, image);//画图 CGContextRestoreGState(context);
0 0
- <图形图像,动画,多媒体> 读书笔记 --- UIKit,Quartz 2D
- <图形图像,动画,多媒体> 读书笔记 --- Quartz 2D 图形的基本变换
- <图形图像,动画,多媒体> 读书笔记 --- 音效
- <图形图像,动画,多媒体> 读书笔记 --- 视频
- <图形图像,动画,多媒体> 读书笔记 --- AirPlay
- <图形图像,动画,多媒体> 读书笔记 --- 图像处理
- <图形图像,动画,多媒体> 读书笔记 --- 力学行为特性
- <图形图像,动画,多媒体> 读书笔记 --- 图像处理之人脸识别
- <图形图像,动画,多媒体> 读书笔记 --- 录制与编辑视频
- <图形图像,动画,多媒体> 读书笔记 --- 录制与编辑视频
- 二:UIKit与Quartz 2D绘图技术学习
- 初探UIKit与Quartz 2D绘画技术
- 图形和多媒体->6.1 Quartz 2D 简介
- Quartz 2D的坐标系和UIKit的坐标系对比以及相互转换
- Quartz 2D的坐标系和UIKit的坐标系对比以及相互转换
- Quartz 2D的坐标系和UIKit的坐标系对比以及相互转换 ? 赶驴记
- 多媒体图形图像技术
- ios-day14-06(Quartz 2D之动画)
- POJ-3111
- 苹果列出了app被拒最常见原因,你中枪了吗?
- Python代码测试 - unitest\doctest\nose
- jsp内置对象
- vs2012 win32程序修改exe图标
- <图形图像,动画,多媒体> 读书笔记 --- UIKit,Quartz 2D
- Spark上矩阵运算库 终期检查报告
- iOS block的用法
- HDU 4989 Summary(数学题暴力)
- 程序员常去的14个顶级开发社区
- 切换账户
- [面试题]构造函数
- ZOJ 3818 Pretty Poem(模拟题)
- 【JAVA程序员面试宝典】2天看完了-谈谈我的理解吧