Core Graphics框架学习之在图片上绘制文字

     话不多说,先上效果图,此需求是图片上的文字可以更改,文字大小也可以更改。

    

    iOS支持两套图形API族:Core Graphics/Quartz 2D和OpenGL ES,OpenGL ES属于跨平台的图形API,属于OpenGL的一个简化版。而QuartZ 2D是苹果公司开发的一套API,它是Core Graphics FrameWork的一部分。Core Graphics FrameWork是基于C的一套绘图API,使用了Quartz作为绘图引擎。它的所有操作都在一个上下文中进行,所以在绘图之前需要获取该上下文(context)并传入执行渲染的函数中。假如你正在渲染一张在内存中的图片,此时需要传入该图片所属的上下文。获得一个图片的上下文是绘图的第一步,如下代码:

           //创建一个基于位图的上下文(context)

           UIGraphicsBeginImageContextWithOptions(size,NO,0.0);//opaque:NO  scale:0.0

    我们可以将图形上下文理解成一块画布,如果没有得到这块画布就不能进行任何操作。下面是我自己写的UIImage的一个category,请看实现

- (UIImage *)imageWithTitle:(NSString *)title fontSize:(CGFloat)fontSize {
    //画布大小
    CGSize size=CGSizeMake(self.size.width,self.size.height);
    //创建一个基于位图的上下文
    UIGraphicsBeginImageContextWithOptions(size,NO,0.0);//opaque:NO  scale:0.0
    
    [self drawAtPoint:CGPointMake(0.0,0.0)];
    
    //文字居中显示在画布上
    NSMutableParagraphStyle* paragraphStyle = [[NSParagraphStyle defaultParagraphStyle] mutableCopy];
    paragraphStyle.lineBreakMode = NSLineBreakByCharWrapping;
    paragraphStyle.alignment=NSTextAlignmentCenter;//文字居中
    
    //计算文字所占的size,文字居中显示在画布上
    CGSize sizeText=[title boundingRectWithSize:self.size options:NSStringDrawingUsesLineFragmentOrigin
                                       attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:fontSize]}context:nil].size;
    CGFloat width = self.size.width;
    CGFloat height = self.size.height;
    
    CGRect rect = CGRectMake((width-sizeText.width)/2, (height-sizeText.height)/2, sizeText.width, sizeText.height);
    //绘制文字
    [title drawInRect:rect withAttributes:@{ NSFontAttributeName:[UIFont systemFontOfSize:fontSize],NSForegroundColorAttributeName:[ UIColor whiteColor],NSParagraphStyleAttributeName:paragraphStyle}];
    
    //返回绘制的新图形
    UIImage *newImage= UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return newImage;
}

    请看代码,一切尽在不言中。下面介绍一款软件PaintCode帮助实现Core Graphics绘图,软件可以直接通过拖拉控件,改变属性,来实现绘图,并且生成oc代码:

    

 

    和"PaintCode"相关文章: 

               http://www.woshipm.com/tag/paintcode

    github下载地址:

               https://github.com/shenguanhua/GHUIImage

    个人微信公众号: 

               iOSDevTeam

你可能感兴趣的:(绘图,graphics,core,Quartz2D,iOS实战开发,代码demo)