iOS 学习 - 15.添加水印
绘制到位图
下面利用位图图形上下文给一个图片添加水印,在下面的程序中我们首先创建上下文,然后在上下文中绘制图片、直线和文本,最后从当前位图上下文中取得最终形成的新图片显示到界面
- (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:@"frame_shop_lovely_bg@2x.jpg"];
//注意绘图的位置是相对于画布顶点而言,不是屏幕
[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;
}
iOS 学习 - 15.添加水印的更多相关文章
- iOS学习15之OC集合
1.数组类 1> 回顾C语言数组 数组是一个有序的集合, 来存储相同数据类型的元素. 通过下标访问数组中的元素,下标从 0 开始. 2> 数组 数组是一个有序的集合,OC中的数组只能存储对 ...
- iOS学习——Quartz2D学习之UIKit绘制
iOS学习——Quartz2D学习之UIKit绘制 1.总述 在IOS中绘图技术主要包括:UIKit.Quartz 2D.Core Animation和OpenGL ES.其中Core Animati ...
- iOS学习路线图
一.iOS学习路线图 二.iOS学习路线图--视频篇 阶 段 学完后目标 知识点 配套学习资源(笔记+源码+PPT) 密码 基础阶段 学习周期:24天 学习后目标: ...
- 黑苹果-IOS学习的开始
深知安装黑苹果的不易,在这里写一下关于我的Thinkpad E430c安装黑苹果教程(Mac版本:Yosemite 10.10.4),希望能够帮助有需要的朋友. 首先贴上我的电脑配置报表: ----- ...
- iOS学习笔记-精华整理
iOS学习笔记总结整理 一.内存管理情况 1- autorelease,当用户的代码在持续运行时,自动释放池是不会被销毁的,这段时间内用户可以安全地使用自动释放的对象.当用户的代码运行告一段 落,开始 ...
- iOS 学习资料整理
iOS学习资料整理 https://github.com/NunchakusHuang/trip-to-iOS 很好的个人博客 http://www.cnblogs.com/ygm900/ 开发笔记 ...
- iOS学习资料整理
视频教程(英文) 视频 简介 Developing iOS 7 Apps for iPhone and iPad 斯坦福开放教程之一, 课程主要讲解了一些 iOS 开发工具和 API 以及 iOS S ...
- iOS 学习
iOS 学习资料 (适合初学者) 本文资料来源于GitHub 一.视频教程(英文) Developing iOS 7 Apps for iPhone and iPad斯坦福开放教程之一, 课程主要讲解 ...
- iOS 学习资料汇总
(适合初学者入门) 本文资料来源于GitHub 一.视频教程(英文) Developing iOS 7 Apps for iPhone and iPad斯坦福开放教程之一, 课程主要讲解了一些 iOS ...
随机推荐
- c#中的正则表达式
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- 前端代码标准最佳实践:CSS
前端工程师对写标准的前端代码的重视程度很高.这些最佳标准实践并不是那个权威组织发布的,而是由大量的前端工程师们在实践过程中的经验总结,目的在于提高代码的可读性,可维护性和性能.那么接着上一篇,我们再来 ...
- 基础复习 关于JS
1,js是一门解释型语言,无需编译,编写js要知道当前对象有什么成员,未必所有成员都能点出来. 2,js大小写敏感,严格区分大小写. 3,弱类型语言,声明用var,字符串推荐使用单引号. 4,==要先 ...
- [Android] 环境配置之正式版Android Studio 1.0
昨天看见 Android Studio 1.0 正式版本发布了:心里挺高兴的. 算是忠实用户了吧,从去年开发者大会一开始出现 AS 后就开始使用了:也是从那时开始就基本没有用过 Eclipse 了:一 ...
- 通过泛型数据,操作SQL数据库
本人在操作数据库的时候,采用将对象的形式操作传入数据库,经过大量百度和朋友帮助,总结出如下两个接口.用于插入数据,提取数据. 要这样操作的前提条件,就是类名和表名一致,类字段和表字段一致就可以了 // ...
- 点击页面任何位置隐藏div
<include file="Public:header" /> <style type="text/css"> table{width ...
- MySQL远程登录设置
可以在一台机器上访问另一台机器的MySQL,但是需要一些设置. 进入MySQL后,输入以下命令: GRANT ALL PRIVILEGES ON *.* TO 'tigase'@'%' IDENTIF ...
- FreeBSD pkg仓库有台湾的镜像了
http://pkg.freebsd.org/ 在这个页面上可以看到: pkg0.bme.freebsd.org pkg0.nyi.freebsd.org pkg0.twn.freebsd.org p ...
- C#多线程学习笔记
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threa ...
- 文件并发(日志处理)--队列--Redis+Log4Net
多线程操作同一个文件时会出现并发问题.解决的一个办法就是给文件加锁(lock),但是这样的话,一个线程操作文件时,其它的都得等待,这样的话性能非常差.另外一个解决方案,就是先将数据放在队列中,然后开启 ...