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,请看实现

[objc] view plain copy

  1. - (UIImage *)imageWithTitle:(NSString *)title fontSize:(CGFloat)fontSize {  

  2.     //画布大小  

  3.     CGSize size=CGSizeMake(self.size.width,self.size.height);  

  4.     //创建一个基于位图的上下文  

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

  6.       

  7.     [self drawAtPoint:CGPointMake(0.0,0.0)];  

  8.       

  9.     //文字居中显示在画布上  

  10.     NSMutableParagraphStyle* paragraphStyle = [[NSParagraphStyle defaultParagraphStyle] mutableCopy];  

  11.     paragraphStyle.lineBreakMode = NSLineBreakByCharWrapping;  

  12.     paragraphStyle.alignment=NSTextAlignmentCenter;//文字居中  

  13.       

  14.     //计算文字所占的size,文字居中显示在画布上  

  15.     CGSize sizeText=[title boundingRectWithSize:self.size options:NSStringDrawingUsesLineFragmentOrigin  

  16.                                        attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:fontSize]}context:nil].size;  

  17.     CGFloat width = self.size.width;  

  18.     CGFloat height = self.size.height;  

  19.       

  20.     CGRect rect = CGRectMake((width-sizeText.width)/2, (height-sizeText.height)/2, sizeText.width, sizeText.height);  

  21.     //绘制文字  

  22.     [title drawInRect:rect withAttributes:@{ NSFontAttributeName:[UIFont systemFontOfSize:fontSize],NSForegroundColorAttributeName:[ UIColor whiteColor],NSParagraphStyleAttributeName:paragraphStyle}];  

  23.       

  24.     //返回绘制的新图形  

  25.     UIImage *newImage= UIGraphicsGetImageFromCurrentImageContext();  

  26.     UIGraphicsEndImageContext();  

  27.     return newImage;  

  28. }  


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

    

 

    和"PaintCode"相关文章: 

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

    github下载地址:

               https://github.com/shenguanhua/GHUIImage

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值