CGContextRef使用简要教程

Posted cxchanpin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CGContextRef使用简要教程相关的知识,希望对你有一定的参考价值。

技术分享

Graphics Context是图形上下文,也能够理解为一块画布,我们能够在上面进行绘画操作,绘制完毕后,将画布放到我们的view中显示就可以,view看作是一个画框.

CGContextRef功能强大。我们借助它能够画各种图形。

开发过程中灵活运用这些技巧,能够帮助我们提供代码水平。

说到绘图。我就立刻想到:我的数学公式都快忘完了。

高中数学你还记得多少?

我记得我上学的时候。数学一直都非常好。

以至于在班里都不敢和别人吵吵闹闹。一吵吵闹闹。别人就会来一句:以为你数学好。就能够怎么样怎么样了是吧?说的我好无奈啊。

这么多年过去了。说句实话。高中时学的数学公式什么的,都忘记的差点儿相同了。

如今要去做高三的考题,预计比写代码还难。

作为一名程序猿,数学好,一定是优势。

就拿绘图来说吧。假设你还清楚的记得那些公式,那么你就能够非常任意地画出一些好看的图形出来。

接下来,我们来看看CGContextRef究竟能实现些什么?

写文字

- (void)drawRect:(CGRect)rect
{
    //获得当前画板
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    //颜色
    CGContextSetRGBStrokeColor(ctx, 0.2, 0.2, 0.2, 1.0);
    //画线的宽度
    CGContextSetLineWidth(ctx, 0.25);
    //開始写字
    [@"我是文字" drawInRect:CGRectMake(10, 10, 100, 30) withFont:font];  
    [super drawRect:rect];
}

这段代码就能够非常美丽的写出四个大字:我是文字。非常easy理解。每句话都有凝视。

画直线

- (void)drawRect:(CGRect)rect
{
    //获得当前画板
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    //颜色
    CGContextSetRGBStrokeColor(ctx, 0.2, 0.2, 0.2, 1.0);
    //画线的宽度
    CGContextSetLineWidth(ctx, 0.25);
    //顶部横线
    CGContextMoveToPoint(ctx, 0, 10);
    CGContextAddLineToPoint(ctx, self.bounds.size.width, 10);
    CGContextStrokePath(ctx);
    [super drawRect:rect];
}

画圆

- (void)drawRect:(CGRect)rect
{
    //获得当前画板
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    //颜色
    CGContextSetRGBStrokeColor(ctx, 0.2, 0.2, 0.2, 1.0);
    //画线的宽度
    CGContextSetLineWidth(ctx, 0.25);
    //void CGContextAddArc(CGContextRef c,CGFloat x, CGFloat y,CGFloat radius,CGFloat startAngle,CGFloat endAngle, int clockwise)1弧度=180°/π (≈57.3°) 度=弧度×180°/π 360°=360×π/180 =2π 弧度
    // x,y为圆点坐标,radius半径,startAngle为開始的弧度。endAngle为 结束的弧度,clockwise 0为顺时针,1为逆时针。

CGContextAddArc(ctx, 100, 20, 20, 0, 2*M_PI, 0); //加入一个圆 CGContextDrawPath(ctx, kCGPathStroke); //绘制路径 [super drawRect:rect]; }

这个画圆的公式你还记得吗?你还知道M_PI是什么吗?等于多少吗?赶紧脑补一下吧。

画矩形

- (void)drawRect:(CGRect)rect
{
    //获得当前画板
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    //颜色
    CGContextSetRGBStrokeColor(ctx, 0.2, 0.2, 0.2, 1.0);
    //画线的宽度
    CGContextSetLineWidth(ctx, 0.25);
    CGContextAddRect(ctx, CGRectMake(2, 2, 30, 30));
    CGContextStrokePath(ctx);
    [super drawRect:rect];
}

图形千千万。万变不离其宗。

很多其它绘图方法。期待你的探索。

作者李刚是刚刚在线(www.superqq.com)站长,百度百家专栏作者
iosproject师非著名自媒体,微信公众号iOS开发:iOSDevTip运营者

技术分享

?



以上是关于CGContextRef使用简要教程的主要内容,如果未能解决你的问题,请参考以下文章

如何缩放图形,使用 CGContextRef 创建

VIM 代码片段插件 ultisnips 使用教程

如何清除 CGContextRef?

CAayer - (void)drawInContext:(CGContextRef)ctx 永远不会被调用

从 CgContextRef 获取 UiImage 并将其传递给另一个 ViewController

iOS:重用 CGContextRef?