IOS之Quartz2D绘图2.随机绘制五角星
2014-07-23 14:32
302 查看
1.
单个五角星绘制
上次讲了在IOS中使用quartz2d绘制基本的图形,今天来绘制一个比较复杂的图形—五角星,五角星大家都很熟悉。先来分析下五角星的画法,一个五角星如图所示。
![](http://img.my.csdn.net/uploads/201407/23/1406097304_6116.png)
1. 先把一个圆周平均五等分,那么每个角度是360/5,然后隔点进行连线就可以绘制五角星
2. 每个连线的夹角就是360/5*2,但是在IOS的正弦余弦计算采用的是弧度制。这里有必要复习下弧度的知识,弧度就是弧的长度,把等于半径的弧度定义为一弧度。那么360度就是2pi.
如图所示
![](http://img.my.csdn.net/uploads/201407/23/1406097306_2091.png)
3. 复习完弧度知识,我们就可以绘制五角星了
绘制代码和截图
![](http://img.my.csdn.net/uploads/201407/23/1406097306_7679.png)
-(void)
drawStar:(CGContextRef) context{
[[UIColor
redColor]
set];
//确定中心点
CGPoint
centerPoint=CGPointMake(160,
230);
//确定半径
CGFloat radius=100.0;
//五角星到顶点
CGPoint p1=CGPointMake(centerPoint.x,
centerPoint.y-radius);
CGContextMoveToPoint(context,
p1.x, p1.y);
//五角星每个点之间点夹角,采用弧度计算。没两个点进行连线就可以画出五角星
//点与点之间点夹角为2*M_PI/5.0,
CGFloat angle=4*M_PI/5.0;
for (int
i=1;
i<=5;
i++) {
CGFloat x=centerPoint.x-sinf(i*angle)*radius;
CGFloat y=centerPoint.y-cosf(i*angle)*radius;
CGContextAddLineToPoint(context,
x, y);
}
CGContextDrawPath(context,
kCGPathFillStroke);
}
2.
多个五角星随机绘制
1.API介绍CGContextSaveGState(context);保存上下文
CGContextRestoreGState(context);回复上下文
CGContextTranslateCTM(context,
x, y);画布移动
CGContextRotateCTM(context,
angle);画布旋转
CGContextScaleCTM(context,
scale, scale);画布缩放
2.运行效果截图
![](http://img.my.csdn.net/uploads/201407/23/1406097306_9031.png)
-(void)
drawMultiStar:(CGContextRef) context
starCount:(int) count{
//确定中心点
CGPoint
centerPoint=CGPointMake(0,
0);
//确定半径
CGFloat radius=100.0;
//五角星五点数组
CGPoint
points[5];
points[0]=CGPointMake(centerPoint.x,centerPoint.y-radius);
//五角星每个点之间点夹角,采用弧度计算。没两个点进行连线就可以画出五角星
//点与点之间点夹角为2*M_PI/5.0,
CGFloat angle=4*M_PI/5.0;
for (int
i=1;
i<5;
i++) {
CGFloat
x=centerPoint.x-sinf(i*angle)*radius;
CGFloat y=centerPoint.y-cosf(i*angle)*radius;
points[i]=CGPointMake(x, y);
}
for (int
i=0;
i<count; i++) {
//保存上下文
CGContextSaveGState(context);
int
randomX=arc4random_uniform(320);
int
randomY=arc4random_uniform(480);
//随机移动画布位置
CGContextTranslateCTM(context,
randomX,randomY);
//随机旋转画布
CGFloat
roate=arc4random_uniform(90)*M_PI/180.0;
CGContextRotateCTM(context,
roate);
//随机缩放画布
float scale=arc4random_uniform(5)/10.0+0.2;
CGContextScaleCTM(context,
scale, scale);
[[self
randomColor]
set];
CGContextMoveToPoint(context,
points[0].x,points[0].y);
for (int
i=1;
i<5;
i++) {
CGContextAddLineToPoint(context,
points[i].x,points[i].y);
}
CGContextDrawPath(context,
kCGPathFillStroke);
//回复上下文
CGContextRestoreGState(context);
}
}
3.
源代码下载
某戳此处下载
相关文章推荐
- iOS Quartz 2D绘图用CGContextRef绘制三角形 —— HERO博客
- iOS:quartz2D绘图(给图形绘制阴影)
- 【IOS 开发学习总结-OC-65】Quartz 2D绘图(4-2)——绘制文本+设置阴影+使用路径
- iOS:quartz2D绘图(处理图像,绘制图像并添加水印)
- iOS 绘图机制简介,Quartz 2D绘图用CGContextRef绘制音频波形图 —— HERO博客
- IOS之Quartz2D绘图1.简单几何图形绘制
- iOS:quartz2D绘图(绘制渐变图形)
- 【IOS 开发学习总结-OC-66】Quartz 2D绘图(4-3)——绘制曲线+在内存中绘图+绘制位图
- iOS:quartz2D绘图(在PDF文件上绘制图片)
- iOS:quartz2D绘图(显示绘制在PDF上的图片)
- IOS之Quartz2D绘图5.绘制UITableViewCell渐变背景
- iPhone Quartz2D 绘图及绘制文字简介
- iOS基础 - Quartz 2D绘图的基本步骤
- IOS之Quartz2D绘图6.PDF文档生成
- 移动开发(IOS) – Quartz 2D绘图
- Iphone Quartz2D 绘图及绘制文字简介
- iOS-UI -- Quartz2D绘制基本图形
- iOS上使用Quartz 2D绘制简单图形
- iOS绘图教程--Quartz 2D(CoreGraphics.framework) 详解
- iOS开发UI篇—Quartz2D使用(绘图路径)