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

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;

    

    

    

}








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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值