苹果开发 笔记(18)

iOS绘图实践
本文介绍了在iOS开发中如何使用UIKit框架进行绘图操作,包括利用UIView进行自定义绘图、使用UIImage绘制位图以及通过CGContext和UIBezierPath实现线条和路径的绘制。

在苹果中心文档里面可以看到绘图方面的内容和UIView很大关联,UIBezierPath 封装很多有用的方法,使用它可以描点,画贝塞尔曲线。今天看的内容除了涉及到画图 还涉及到绘制位图方面的知识点,很实用。我还没学会怎样使用这个帮助文档,还需要时间练习。在这个文档里面有一些案例可以很方便教授使用。当忘记了可以查询一下。查看绘图相关的API和介绍

这里写图片描述

//绘图-画线和画一个图,当初不知道为什么要这样操作,模糊地用了一下api也大概实现出来。
下面继承一个UIView类,名为MyView。在drawRect 里面重写这个类,在里面画图。操作点图案也行。

下面记录一下绘制一条线。给它加上点颜色。

 #import "MyView.h"

@implementation MyView


// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect
{

    //在这里绘图
    UIImage *image =[UIImage imageNamed:@"test.png"];
    CGSize size = [image size];

    UIGraphicsBeginImageContext(CGSizeMake(size.width*2, size.height));
    [image drawAtPoint:CGPointMake(size.width/2, 0)];
    UIImage *im = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    UIImageView *imageView =[[UIImageView alloc]initWithImage:im];
    [self addSubview:imageView];

    //绘图-画线

    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetStrokeColorWithColor(context, [UIColor redColor].CGColor);
    CGContextMoveToPoint(context, 0, 0);
    CGContextAddLineToPoint(context, 200, 200);
    CGContextStrokePath(context);

}


@end


![这里写图片描述](http://img.blog.youkuaiyun.com/20150503184116388)
    MyView *myview = [[MyView alloc]init];
    myview.frame = self.view.frame;
    myview.backgroundColor = [UIColor whiteColor];
    [self.view addSubview:myview];
    [myview setNeedsDisplay];

UIView 默认是黑色,创建的时候,可以恰当给它的改成白色。顺便给它一个宽度小。创建完成后 发送[myview setNeedsDisplay]的消息,调用里面方法。

2015-5-4更新
使用UIBezierPath也可以达到绘制路径的做法。
如果声明了 CGContextSetStrokeColorWithColor(context, [UIColor redColor].CGColor); 后,不再设置颜色的时候,程序表现出来的结果是使用UIBezierPath 描绘出的线条颜色和上面的程序是一样,但在填充的时候,添加 [[UIColor greenColor] set]; 则可以改变不同的色。

    UIBezierPath *p=[[UIBezierPath alloc]init];
    [[UIColor greenColor] set];
    [p moveToPoint:CGPointMake(30, 30)];
    [p addLineToPoint:CGPointMake(30, 200)];
    [p setLineWidth:2];
    [p stroke];
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值