绘制到位图

下面利用位图图形上下文给一个图片添加水印,在下面的程序中我们首先创建上下文,然后在上下文中绘制图片、直线和文本,最后从当前位图上下文中取得最终形成的新图片显示到界面

- (void)viewDidLoad {
[super viewDidLoad]; UIImage *image = [self drawImageAtImageContext];
UIImageView *imageView = [[UIImageView alloc]initWithImage:image];
imageView.center = CGPointMake(, );
[self.view addSubview:imageView]; }
//添加水印
-(UIImage *)drawImageAtImageContext{
//获得一个位图图形上下文
CGSize size = CGSizeMake(, );//画布大小 UIGraphicsBeginImageContext(size); UIImage *image = [UIImage imageNamed:@"[email protected]"];
//注意绘图的位置是相对于画布顶点而言,不是屏幕
[image drawInRect:CGRectMake(, , , )];
//添加水印
CGContextRef ref = UIGraphicsGetCurrentContext();
//字符的长度和 font
UIFont *font = [UIFont systemFontOfSize:];
NSString *str = @"大金毛";
int strLength = str.length *font.pointSize;
//两点确定一条直线
//下划线的长度等于字符长度
CGContextMoveToPoint(ref, , );
CGContextAddLineToPoint(ref, strLength + , );
//直线的颜色、宽度
[[UIColor redColor]setStroke];
CGContextSetLineWidth(ref, );
//绘制图像到指定图形上下文,只有边框
CGContextDrawPath(ref, kCGPathStroke);
//字符的位置
[str drawInRect:CGRectMake(, , , ) withAttributes:@{NSFontAttributeName:font,NSForegroundColorAttributeName:[UIColor redColor]}];
//返回绘制的新图形
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
//最后一定不要忘了关闭上下文
UIGraphicsEndImageContext(); return newImage;
}

来自KenshinCui

04-24 17:47