ios-图形
rv0p111
之前由于一些原因博客没有更新,现在还是正常更新,继续分享..
展开
-
ios-Quartz 2D
Quartz 2D 是一个二维的绘图引擎,同时支持ios和Mac OS X系统是跨平台的,纯C语言写的,包含在Core Graphics框架中。Quartz 可以绘制图形:线条\三角形\矩形\圆\弧等它也可以绘制文字,就比如说你微博发出去的图片会有个水印,其实就是绘制了文字。也可以绘制\生成图片读取\生成PDF截图\裁剪图片自定义UI控件Quartz 2D 的API都是纯C语言的数据类型和函数基本...转载 2017-07-30 17:45:01 · 362 阅读 · 0 评论 -
ios-截图
我们这里的截图是截取view的图片,这里我说下实验的步骤,就比如说你在storyboard中随便拉了几个控件,然后你把下面这段代码写到viewDidLoad里面,这样就可以保存到相册中,在相册中看你所截取的图片了,这里我们调用self.view.layer renderInContext方法其实就已经帮我们封装了,拼接路径啊,添加路径啊,渲染啊。渲染是渲染到图片上下文中的输出目标是一个UIImag...原创 2017-08-01 09:49:34 · 332 阅读 · 0 评论 -
ios-画一个图片水印和文字水印
其实就是开启图片上下文,然后把大图给画上去,然后再把文字水印和图片水印给画到这个大图上面去。这里的draw方法都已经帮你把获取上下文,拼接路径,把路径添加到上下文去,再进行渲染。 //获取图片 UIImage * image=[UIImage imageNamed:@"lvjuren"]; //开启图片类型的上下文,NO代表透明,后面0是指缩放比例,默认就跟屏幕的缩放因子一样 ...原创 2017-08-01 09:30:19 · 616 阅读 · 0 评论 -
ios-画一个带圆环的图片
画的步骤的话其实是这样子的,我们首先先画出一个圆环,圆环的数据的话是根据你的图片的大小来算的,然后我们再画出一个裁剪的显示区域,画出之后,我们再把图片给画到上下文中同时渲染就可以了。具体步骤如下 //获取张图片 UIImage * image=[UIImage imageNamed:@"03"]; //设置margin就是间距 CGFloat margin=10; /...原创 2017-08-01 08:37:27 · 1717 阅读 · 0 评论 -
ios-对图片进行裁剪得到一个新图片和保存到相册
在ios10我们需要在info.plist文件中设置下这样的一个键值对Privacy - Photo Library Usage Description,后面的value你可以自己写你想要的提示信息//获取图片 UIImage * image=[UIImage imageNamed:@"03"]; //开启上下文 UIGraphicsBeginImageContextWit...原创 2017-07-31 21:20:02 · 1221 阅读 · 0 评论 -
ios-图片类型的上下文
图片类型的上下文可以帮我们获取图片,和layer类型的上下文是不一样的,图片类型的上下文渲染是渲染到一张图片上,而layer类型的上下文是直接渲染到了UIView上了。我们对于图片类型的上下文我们首先要开启,结束之后别忘记关闭。大致的步骤如下所示。 //开启图片类型的上下文 UIGraphicsBeginImageContext(CGSizeMake(300, 300)); ...原创 2017-07-31 18:08:48 · 519 阅读 · 0 评论 -
ios-裁剪上下文的渲染的区域
注意这里的裁剪没有把上下文给裁剪了,而只是把显示的区域进行了裁剪。我们要先把显示区域给裁剪的才能去渲染。- (void)drawRect:(CGRect)rect {//获取图片的对象 UIImage * image=[UIImage imageNamed:@"bg"]; //获取上下文 CGContextRef ctx=UIGraphicsGetCurrent...原创 2017-07-31 17:45:15 · 370 阅读 · 0 评论 -
ios-模拟imageView的类
.h文件#import <UIKit/UIKit.h>@interface ImageView : UIView@property (nonatomic ,strong)UIImage * image;- (instancetype)initWithImage:(UIImage *)image;@end.m文件#import "ImageView.h"@implemen...原创 2017-07-31 17:24:17 · 262 阅读 · 0 评论 -
ios-绘制文字和图片
这里都是在UIView 的 drawRect方法中调用的绘制文字 NSString * str=@"哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈"; //从某个点开始 [str drawAtPoint:CGPointZero withAttributes:@{NSUnderlineStyleAttributeName:@(1)}]; //写在那个区域内,字多可以换行 ...原创 2017-07-31 16:41:18 · 539 阅读 · 0 评论 -
ios-图形上下文栈
图形上下文栈保存的仅仅是当前的绘图状态信息也就是线宽,颜色,缩放,平移啊这些信息,跟路径和输出目标都是没有关系的。图形上下文栈有两个操作一个是void CGContextSaveGState(CGContextRef c)这个函数就是将当前绘图信息的状态保存到一个context的 graphics state栈中。关于state的值,如下所示CTM (current transformation...原创 2017-07-31 15:34:22 · 429 阅读 · 0 评论 -
ios-矩阵旋转缩放平移操作
矩阵的旋转、缩放、平移操作一定是在添加路径到上下文中之前进行的否则是无效的。简单来说就是如下的操作 //1、获取上下文 CGContextRef ctx=UIGraphicsGetCurrentContext(); //进行矩阵的旋转操作 //CGContextRotateCTM(ctx, M_PI_4); //缩放操作,就是x缩短为0.5,y缩短为0.5 ...原创 2017-07-31 14:55:04 · 900 阅读 · 0 评论 -
ios-饼图和柱状图的绘制
饼图 NSArray * array=@[@0.25,@0.35,@0.3,@0.1]; CGFloat start=0.0; CGFloat end=0.0; for(int i=0;i<array.count;i++) { //结束的位置等于起始的位置加大小 end=2*M_PI*[array[i] floatValue]+...原创 2017-07-31 11:06:12 · 651 阅读 · 0 评论 -
ios-渲染的方式以及填充规则
渲染的方式主要分为两种一种是描边一种是填充,其实就是一个是空心,一个是实心的区别,具体看代码这是C的方式 //1、获取当前上下文 CGContextRef ctx=UIGraphicsGetCurrentContext(); //2、拼接路径,同时把路径添加到上下文当中 //画个三角形 CGContextMoveToPoint(ctx, 50, 50);...原创 2017-07-31 09:12:43 · 1800 阅读 · 0 评论 -
ios-绘图样式
几种常见的绘图样式的介绍:线宽、连接处、头尾样式C的方式 //1、获取上下文 CGContextRef ctx=UIGraphicsGetCurrentContext(); //2、拼接路径,同时把路径添加到上下文当中 CGContextMoveToPoint(ctx, 50, 50); CGContextAddLineToPoint(ctx, 100, ...原创 2017-07-31 08:25:41 · 431 阅读 · 0 评论 -
ios-矩形-圆角矩形-椭圆-圆形的绘制
画一个矩形//创建路径 UIBezierPath * path=[UIBezierPath bezierPathWithRect:CGRectMake(20, 20, 80, 80)]; //渲染 [path stroke];//也可以直接这样 [[UIBezierPath bezierPathWithRect:CGRectMake(20, 20, 80, 80)] ...原创 2017-07-30 22:02:12 · 3117 阅读 · 0 评论 -
ios-drawrect方法解析
这里学习到几个知识点1、代码为什么要写在drawrect中?因为我们在这里面获取到的上下文是系统肯定已经创建好了,如果我们在别的地方获取,可能系统还没有创建好。也就是说在这个方法中我们能获取到正确的上下文。2、rect参数的含义就是当前view的bounds3、drawrect 什么时候调用这个方法其实是系统自动回调用在view第一次显示的时候就会调用在这个view就行重绘的时候也会调用4、怎么样...原创 2017-07-30 20:56:01 · 563 阅读 · 0 评论 -
ios-绘图的方式
以下方法都是在drawRect方法中调用的纯C的方式1//获取当前绘图上下文 CGContextRef ctx=UIGraphicsGetCurrentContext(); //拼接路径 同时把路径添加到上下文中 CGContextMoveToPoint(ctx, 50, 50);//到这里的时候相当于你笔只是停留在这个位置的上面 CGContextAddLineT...原创 2017-07-30 20:34:53 · 317 阅读 · 0 评论 -
ios-CGContextDrawImage图形倒置问题
一、简单介绍首先我们应该知道在UIKit中,y轴是向下的。而在Core Graphics(Quartz) 中 y轴是向上。所以其实我们使用CGContextDrawImage来绘图的话,默认是在用户空间下绘制出来的,使用的坐标系是以左下角为原点,y轴向上,x轴向右。二、实战演练所以我们在进行绘制的时候,写了如下代码-(void)drawRect:(CGRect)rect{ //获取上下...原创 2018-03-10 16:07:12 · 1922 阅读 · 0 评论