图形上下文

上下文的矩阵操作其实就是修改上下文的形变,
主要有以下几种
平移
CGContextTranslateCTM(ctx, 100, 100);
旋转
CGContextRotateCTM(ctx, M_2_PI);
缩放
CGContextScaleCTM(ctx, 0.5, 0.5);

给图片加水印

实现水印效果的思路:
开启一个和原始图片一样的图片上下文.
把原始图片先绘制到图片上下文.
再把要添加的水印(文字,logo)等绘制到图片上下文.
最后从上下文中取出一张图片.
关闭图片上下文.

  • 1.如何开启一个图片上下文?
    size:开启多大的上文
    opaque:不透明度
    scale:缩放上下文.
         UIGraphicsBeginImageContextWithOptions(image.size, YES, 0);
  • 2.如何从图片上下文当中生成一张图片?
        UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
  • 3.如何关闭上下文?
        UIGraphicsEndImageContext();

简单圆形图片的剪切

上下文的大小和原始图片保持一样.以免图片被拉伸缩放.
在上下文的上面添加一个圆形裁剪区域.圆形裁剪区域的半径大小和图片的宽度一样大.
把要裁剪的图片绘制到图片上下文当中.
从上下文当中取出图片.
关闭上下文.

  • 1.如何设置圆形路径?
         UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:
                            CGRectMake(0, 0, image.size.width, image.size.width)];
  • 2.如何把一个路径设为裁剪区域?
        [path addClip];

绘制有边框的图片

具体实现思路:
1.假设边框宽度为BorderW
2.开启的图片上下文的尺寸就应该是原始图片的宽高分别加上两倍的BorderW,这样开启的目的是为了不让原始图片变形.
3.在上下文上面添加一个圆形填充路径.位置从0,0点开始,宽高和上下文尺寸一样大.设置颜色为要设置的边框颜色.
4.继续在上下文上面添加一个圆形路径,这个路径为裁剪路径.
它的x,y分别从BorderW这个点开始.宽度和高度分别和原始图片的宽高一样大.
将绘制的这个路径设为裁剪区域.
5.把原始路径绘制到上下文当中.绘制的位置和是裁剪区域的位置相同,x,y分别从border开始绘制.
6.从上下文状态当中取出图片.
7.关闭上下文状态.

 //0.加载图片
    UIImage *image = [UIImage imageNamed:@"阿狸头像"];
    //1.确定边框宽度
    CGFloat borderW = 2;
    //2.开启一个跟图片原始大小的上下文
    //opaque:不透明度
    CGSize size = CGSizeMake(image.size.width + borderW * 2, image.size.height + 2 *borderW);
    UIGraphicsBeginImageContextWithOptions(size, NO, 0);
    //3绘制一个大圆形显示
    UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(0, 0, size.width, size.height)];
    //2.2.把圆形的路径设置成裁剪区域
    [[UIColor orangeColor] set];
    [path fill];

     //4.绘制一个小圆,把小圆设置成裁剪区域

     UIBezierPath *path2 = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(borderW, borderW, image.size.width, image.size.height)];
    [path2 addClip];
    //5.把图片绘制到上下文当中
    [image drawAtPoint:CGPointMake(borderW, borderW)];
    //6.从上下文当中取出图片
    UIImage *newImage =  UIGraphicsGetImageFromCurrentImageContext();
    //7.关闭上下文
    UIGraphicsEndImageContext();
//

你可能感兴趣的:(图形上下文)