iOS开发的2D绘制--CoreGraphics的简单使用二(画图形)
来源:互联网 发布:black magic黑卡 知乎 编辑:程序博客网 时间:2024/05/23 00:06
上一篇给大家简单介绍了如何绘制线条,这次我们升级了,我们开始绘制图形,
其实绘制图形也是很简单的,iOS的SDK给我们封装了许多好用的API,废话不多说,实战吧骚年。。。
我们先来画一个圆和一个矩形,看过我上一篇文章的朋友应该会知道,首先是drawRect重写,然后获得图形上下文CGContextRef,
好了,开搞:
- (void)drawRect:(CGRect)rect
{
// Drawing code
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context, [UIColor grayColor].CGColor);//填充色设置成灰色
CGContextFillRect(context,self.bounds);//把整个空间用刚设置的颜色填充
//上面是准备工作,下面开始画图形了
CGContextSetStrokeColorWithColor(context, [UIColor greenColor].CGColor);//设置线的颜色
//画矩形
CGContextAddRect(context,CGRectMake(20,20,100,100));//我们画了一个(20,20,100,100)的矩形
//画圆
CGContextAddEllipseInRect(context,CGRectMake(20,20,100,100));//我们又在此矩形内画了一个圆
CGContextStrokePath(context);//把线在界面上绘制出来
}
看看效果,有图有真相:
现在,我们想把那个圆里面填充上红色,边线绿色加粗,并且让矩形的边线是蓝色
- (void)drawRect:(CGRect)rect
{
// Drawing code
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context, [UIColor grayColor].CGColor);//填充色设置成灰色
CGContextFillRect(context,self.bounds);//把整个空间用刚设置的颜色填充
//上面是准备工作,下面开始画图形了
CGContextSetStrokeColorWithColor(context, [UIColor blueColor].CGColor);//设置线的颜色
//画矩形
CGContextAddRect(context,CGRectMake(20,20,100,100));//我们画了一个(20,20,100,100)的矩形
CGContextStrokePath(context);//把矩形在界面上绘制出来
//画圆
CGContextSetLineWidth(context,3);
CGContextSetFillColorWithColor(context, [UIColor redColor].CGColor);//设置填充颜色为红色
CGContextFillEllipseInRect(context,CGRectMake(20,20,100,100));//填充
CGContextSetStrokeColorWithColor(context, [UIColor greenColor].CGColor);//设置线的颜色
CGContextAddEllipseInRect(context,CGRectMake(20,20,100,100));//我们又在此矩形内画了一个圆
CGContextStrokePath(context);//把线在界面上绘制出来
// CGContextFillPath(context);//把所有的路径填满,这操作也可用于填充,但是需要有封闭的path
}
再看看效果:这个画图是不是太简单了点?好吧咱们来点看起来显高端的,咱们画一个类似于气泡聊天窗口的图形怎么样?
看代码:
- (void)drawRect:(CGRect)rect
{
// Drawing code
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context, [UIColor grayColor].CGColor);//填充色设置成灰色
CGContextFillRect(context,self.bounds);//把整个空间用刚设置的颜色填充
//上面是准备工作,下面开始画图形了
CGContextSetFillColorWithColor(context, [UIColor whiteColor].CGColor);//气泡的填充色设置为白色
CGRect rrect = CGRectMake(45,20,200,50);
CGFloat radius = 6.0;//圆角的弧度
CGFloat arrowY = 40;//设置箭头的位置
CGFloat minx = CGRectGetMinX(rrect), midx = CGRectGetMidX(rrect), maxx = CGRectGetMaxX(rrect);
CGFloat miny = CGRectGetMinY(rrect), midy = CGRectGetMidY(rrect), maxy = CGRectGetMaxY(rrect);
// 画一下小箭头
CGContextMoveToPoint(context, minx, arrowY);
CGContextAddLineToPoint(context,minx-7, arrowY-10.5);
CGContextAddLineToPoint(context,minx, arrowY-10);
//添加四个角的圆角弧度
CGContextAddArcToPoint(context, minx, miny, midx, miny, radius);
CGContextAddArcToPoint(context, maxx, miny, maxx, midy, radius);
CGContextAddArcToPoint(context, maxx, maxy, midx, maxy, radius);
CGContextAddArcToPoint(context, minx, maxy, minx, midy, radius);
//结束绘制
CGContextClosePath(context);//完成整个path
CGContextFillPath(context);//把整个path内部填充
}
看看这代码运行的效果:
咋样,这个看起来还是很不错的吧?
- iOS开发的2D绘制--CoreGraphics的简单使用二(画图形)
- iOS开发的2D绘制--CoreGraphics的简单使用一(画线条)
- iOS开发的2D绘制--CoreGraphics的简单使用三(画文字和图片)
- iOS开发的2D绘制--CoreGraphics的简单使用四(UIBezierPath)
- IOS开发:CoreGraphics简单绘图
- 使用CoreGraphics绘制一个简单的折线图,可自定义坐标。
- iOS海哥开发笔记 (海哥原创,绘图Quartz-2d的简单使用 二)
- (CoreGraphics)画图IOS
- 【iOS学习】基于CoreGraphics的3D渲染方案
- CoreGraphics画图2
- iOS Quartz-2d画图 - 简单
- iOS海哥开发笔记 (海哥原创,Quartz-2d的简单使用 一)
- iOS上使用Quartz 2D绘制简单图形
- iOS上使用Quartz 2D绘制简单图形
- iOS开发 3D Touch的简单使用
- iOS 简单的使用UIBezierPath绘制
- iOS 简单的使用UIBezierPath绘制
- iOS图形绘制CoreGraphics篇
- YUV视频格式到RGB32格式转换的速度优化 下篇
- 多态的内幕--(C++, C)语言两个版本
- 关于PHP的漏洞以及如何防止PHP漏洞?
- JQuery 上下文选择器
- MotionEvent事件在onInterceptTouchEvent()、onTouchEvent()中的传递顺序
- iOS开发的2D绘制--CoreGraphics的简单使用二(画图形)
- 关闭浏览器 注销 刷新也注销
- Hibernate 二级缓存 和 查询缓存
- 外漏发光字的优点
- lseek 在CentOS 4.4 和 CentOS 6.3 下的区别
- MySQL:日期函数、时间函数总结(MySQL 5.X)
- 环境配置"错误:找不到或无法加载主类HelloWorld"之疑
- php按照奖品百分比随机抽奖代码分析
- ArcGIS Server 9.3完整清晰安装流程【转】