码迷,mamicode.com
首页 > 其他好文 > 详细

XMG Quartz2D 水印效果。非layer里面手动创建位图上下文,不是layer中drawRect系统自动创建上下文

时间:2016-05-12 21:11:25      阅读:218      评论:0      收藏:0      [点我收藏+]

标签:

1。

 // 1.获取上下文(位图上下文) 这个方法上下文都可以获取。不只是layer上下文

    CGContextRef ctx = UIGraphicsGetCurrentContext();



2. 在viewController中 我们需要手动的创建上下文对象。因为系统不会自动为我们生成上下文

 0.获取上下文,之前的上下文都是在viewdrawRect方法中获取(跟View相关联的上下文layer上下文)

    // 目前我们需要绘制图片到新的图片上,因此需要用到位图上下文


/ 怎么获取位图上下文,注意位图上下文的获取方式跟layer上下文不一样。位图上下文需要我们手动创建。

    

    // 开启一个位图上下文,注意位图上下文跟view无关联,所以不需要在drawRect.


3.

  // size:位图上下文的尺寸(新图片的尺寸)

    // opaque: 不透明度 YES:不透明 NO:透明,通常我们一般都弄透明的上下文

    // scale:通常不需要缩放上下文,取值为0,表示不缩放

    UIGraphicsBeginImageContextWithOptions(image.size, NO, 0);





源码如下

#import "ViewController.h"


// 在图片的基础绘制一些文字或者Logo,最终生成一张图片

@interface ViewController ()

@property (weak, nonatomic) IBOutlet UIImageView *imageView;


@end


@implementation ViewController


- (void)viewDidLoad {

    [super viewDidLoad];

    // Do any additional setup after loading the view, typically from a nib.

    

    // 加载图片

    UIImage *image = [UIImage imageNamed:@"小黄人"];

    

    // 0.获取上下文,之前的上下文都是在viewdrawRect方法中获取(跟View相关联的上下文layer上下文)

    // 目前我们需要绘制图片到新的图片上,因此需要用到位图上下文

    

    // 怎么获取位图上下文,注意位图上下文的获取方式跟layer上下文不一样。位图上下文需要我们手动创建。

    

    // 开启一个位图上下文,注意位图上下文跟view无关联,所以不需要在drawRect.

    // size:位图上下文的尺寸(新图片的尺寸)

    // opaque: 不透明度 YES:不透明 NO:透明,通常我们一般都弄透明的上下文

    // scale:通常不需要缩放上下文,取值为0,表示不缩放

    UIGraphicsBeginImageContextWithOptions(image.size, NO, 0);

    

    

//    //贝泽尔曲线之所以可以用是因为上面获取了一个上下文对象

//    UIBezierPath*berPath=[UIBezierPath bezierPathWithArcCenter:CGPointMake(100,100) radius:100 startAngle:0 endAngle:M_PI*2 clockwise:YES];

//    

//    berPath.lineWidth=3;

//    [[UIColor redColor] setStroke];

//    [[UIColor greenColor]setFill];

//    [berPath stroke];

//    [berPath fill];

    

    

    UIBezierPath*path=[UIBezierPath bezierPathWithOvalInRect:CGRectMake(0, 0, 300, 300)];

    [[UIColor redColor]setStroke];

    [[UIColor yellowColor]setFill];

    [path fill];

    [path stroke];

    

    // 1.获取上下文(位图上下文) 这个方法上下文都可以获取。不只是layer上下文

    CGContextRef ctx = UIGraphicsGetCurrentContext();

    

    // 2.描述路径

    CGContextMoveToPoint(ctx, 50, 50);

    

    CGContextAddLineToPoint(ctx, 200, 200);

    

    [[UIColor redColor] setStroke];

    

    // 3.渲染上下文

    CGContextStrokePath(ctx);

    

//    CGContextRef contextRef=UIGraphicsGetCurrentContext();

//    

//    CGContextMoveToPoint(contextRef, 40, 40);

//    

//    CGContextAddLineToPoint(contextRef, 200, 200);

//    

//    [[UIColor redColor] setStroke];

//    

//    CGContextStrokePath(contextRef);

    

    

//    UIBezierPath *path =[UIBezierPath bezierPathWithOvalInRect:CGRectMake(0, 0, 300, 300)];

//    

//    [[UIColor redColor] set];

//    [path stroke];

    

    

//    // 1.绘制原生的图片

//    [image drawAtPoint:CGPointZero];

//    

//    // 2.给原生的图片添加文字

//    NSString *str = @"小码哥";

//    

//    // 创建字典属性

//    NSMutableDictionary *dict = [NSMutableDictionary dictionary];

//    dict[NSForegroundColorAttributeName] = [UIColor redColor];

//    dict[NSFontAttributeName] = [UIFont systemFontOfSize:20];

//    

//    [str drawAtPoint:CGPointMake(200, 528) withAttributes:dict];

    

    // 3.生成一张图片给我们,从上下文中获取图片

    UIImage *imageWater = UIGraphicsGetImageFromCurrentImageContext();

    

    // 4.关闭上下文

//    UIGraphicsEndImageContext();

    

    _imageView.image = imageWater;

    

    

    

}








XMG Quartz2D 水印效果。非layer里面手动创建位图上下文,不是layer中drawRect系统自动创建上下文

标签:

原文地址:http://blog.csdn.net/u012131827/article/details/51352504

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!