利用as3绘图是我特别喜欢的,因为通过as3可以绘制出各种的图形效果,就像画画一样。这段时间接触了一下ios的开发,感觉很不错。借助了之前学到as3的知识,把这之前的玩意改用了oc 来写。其实原理是一样的,跟语言没关系,只是需要翻译一下就能产生出效果。关键还是算法和公式效应。这些公式能产生一些特别好看的组合效果出来需要做一些尝试,因为效果图并不是可以预想得到,经常几次调整,这个绘图出现的效果 会让人产生一种很让人惊讶的感觉。
在ios 绘图,需要在UiView 进行,而且还要覆盖drawRect 的行为。对于这种图形效果,关键是getPoint 获取点的坐标,这一点是很重要。然后利用开始点和结束点来进行连线,让其产生最终的效果。
在getPoint 参数里面sin 的值 5 是可以更改的,这个值变化了,产生的效果也不一样,可以试试。
//
// MyUIView.m
// HelloGraphics
//
// Created by xiashu on 15/3/7.
// Copyright (c) 2015年 xiashu. All rights reserved.
//
#import "MyUIView.h"
struct AsPoint
{
double x;
double y;
};
typedef struct AsPoint AsPoint;
@implementation MyUIView
-(void)drawRect:(CGRect)rect
{
//获取上下文
CGContextRef ctx = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(ctx, 1);
//绘图
//第一条线
for (int i=1; i<=360; i++)
{
AsPoint p = [self getPoint:i-1];
AsPoint p2 = [self getPoint:i-3];
CGContextMoveToPoint(ctx, 160+p.x, 200+p.y);
CGContextAddLineToPoint(ctx, 160+p2.x, 200+p2.y);
}
CGContextStrokePath(ctx);
}
-(AsPoint) getPoint:(NSInteger) k
{
AsPoint p;
double len = 150 * sin(5*k);
p.x = len* cos(k);
p.y = len* sin(k);
return p;
}
@end