绘制到位图
下面利用位图图形上下文给一个图片添加水印,在下面的程序中我们首先创建上下文,然后在上下文中绘制图片、直线和文本,最后从当前位图上下文中取得最终形成的新图片显示到界面
- (void)viewDidLoad { [super viewDidLoad]; UIImage *image = [self drawImageAtImageContext]; UIImageView *imageView = [[UIImageView alloc]initWithImage:image]; imageView.center = CGPointMake(160, 282); [self.view addSubview:imageView]; } //添加水印 -(UIImage *)drawImageAtImageContext{ //获得一个位图图形上下文 CGSize size = CGSizeMake(300, 188);//画布大小 UIGraphicsBeginImageContext(size); UIImage *image = [UIImage imageNamed:@"frame_shop_lovely_bg@2x.jpg"]; //注意绘图的位置是相对于画布顶点而言,不是屏幕 [image drawInRect:CGRectMake(0, 0, 300, 188)]; //添加水印 CGContextRef ref = UIGraphicsGetCurrentContext(); //字符的长度和 font UIFont *font = [UIFont systemFontOfSize:15]; NSString *str = @"大金毛"; int strLength = str.length *font.pointSize; //两点确定一条直线 //下划线的长度等于字符长度 CGContextMoveToPoint(ref, 200, 178); CGContextAddLineToPoint(ref, strLength + 200, 178); //直线的颜色、宽度 [[UIColor redColor]setStroke]; CGContextSetLineWidth(ref, 2); //绘制图像到指定图形上下文,只有边框 CGContextDrawPath(ref, kCGPathStroke); //字符的位置 [str drawInRect:CGRectMake(200, 158, 100, 30) withAttributes:@{NSFontAttributeName:font,NSForegroundColorAttributeName:[UIColor redColor]}]; //返回绘制的新图形 UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); //最后一定不要忘了关闭上下文 UIGraphicsEndImageContext(); return newImage; }