XMG Quartz2D的简单使用

//

//  Quratz2DView.m

//  Quartz2D

//

//  Created by 王宁 on 16/5/6.

//  Copyright ? 2016年 ylshmacmini. All rights reserved.

//

#import "Quratz2DView.h"

//[email protected]是一个二维绘图引擎,同时支持IOS和Mac系统

//最常用的功能。
截图/裁剪图片 2.自定义UI控件
最重要的作用 自定义UIView

// 有些UI界面机器复杂,普通的UI控件无法实现。此时使用Quartz2D
将结构绘制出来

//其实,IOS
中大部分控件内容都是通过Quartz2D

//图形上下文对象
理解为一个画板/画布

@implementation Quratz2DView

/**

如何利用Quartz2D绘制东西到view上去 
上下文对象分为5种类型

*

*  首先得有上下文对象,它可以保存对象,决定着绘制的位置

其次。那个图形上下文对象必须跟view有关系 ,才可以将内容绘制到view上去

*/

/**

*  绘制的3个步骤

1.拿到图形上下文对象 (获取上下文对象)

2.绘制相关的图形内容  (描述路径)

3.利用图形上下文所绘制的内容渲染显示到view上去 (做渲染操作)

*/

//首先要拿到图形上下文对象,也就是画布

//画板的作用

//1. 保存绘图的信息和
状态

// 2.决定输入目标。决定输入到什么位置上面

/**

* 输出目标可以为pdf,bitmap
或者是窗口上

绘图的三步

i.绘制的图形

ii.保存上下文

iii 显示出来,输出目标

相同的一套绘图序列,指定不同的Graphics Context
可以将相同的东西绘制到不同的对象上去

layer相当于图层

*/

//    CGContextRef contextRef=cgcontext

//通常在drawRect方法中进行绘图

//为什么要在drawRect方法中绘图。为什么要在这个方法里面?? 
因为只有在这个方法里面才可以获得跟当前view的layer相关的上下文对象

//什么时候调用drawRect方法,当这个View要显示的时候会调用
所以说这个方法只会调用一次
先调用viewDidLoad -->viewWillAppear-->此方法,因为这个时候View即将显示--->viewDidAppear

//这个rect是当前控件的bounds

-(void)drawRect:(CGRect)rect

{

//UIKit
已经封装了一些绘图的功能

//贝泽尔路径 .封装了好多的形状
对上下文的封装

//创建路径

UIBezierPath*path=[UIBezierPath bezierPath];

[path setLineWidth:20];

[path setLineCapStyle:kCGLineCapSquare];

//设置起点

[path moveToPoint:CGPointZero];

//添加某条线

[path addLineToPoint:CGPointMake(200, 200)];

//绘制路径

[path stroke];

}

#pragma mark - drawLine2

-(void)drawLine2{

//一版以CG开头的都是CoreGraphics

CGContextRef ref=UIGraphicsGetCurrentContext();

//不需要创建路径了,什么东西直接往上下文添加

CGContextMoveToPoint(ref, 40, 40);

CGContextAddLineToPoint(ref, 100, 100);

CGContextSetLineWidth(ref, 20);

CGContextSetLineCap(ref, kCGLineCapSquare);

[[UIColor redColor] set];

//渲染

CGContextStrokePath(ref);

}

#pragma mark - drawLine

-(void)drawLine{

//画一条线要有一个起点

//    CGContextRef ref=

/**

1. 获得图形上下文

2. 描绘路径

3. 保存在上下文中

4. 渲染

*/

//目前我们所用的上下文都是UIGraphics开头的

//1.
获得图形上下文  Ref 引用的意思 CG
目前使用到的类型和函数

//一版以CG开头的都是CoreGraphics

CGContextRef ref=UIGraphicsGetCurrentContext();

//2.创建路径

CGMutablePathRef path=  CGPathCreateMutable();

//想要画条线,必须要有一个起点 .const CGAffineTransform * _Nullable m
形变.不要形变了给个NULL

CGPathMoveToPoint(path, NULL, 50, 50);

//画一条线

CGPathAddLineToPoint(path, NULL, 200, 200);

//画的线的颜色

[[UIColor redColor]set];

//设置线条的粗细

CGContextSetLineWidth(ref, 12);

CGContextSetLineCap(ref, kCGLineCapRound);

//给上下文对象添加路径
。跟上下文有关系

CGContextAddPath(ref, path);

//渲染跟上下文有关系

CGContextStrokePath(ref);

}

//加载完xib进入该方法

-(void)awakeFromNib{

}

@end

时间: 2024-08-29 06:15:36

XMG Quartz2D的简单使用的相关文章

Quartz2D的简单使用概述(一)

很久没有更新博文,今天把之前就想研究的quartz2D看了下,了解了些简单的作画方法,赶紧记录下来.学习Quartz2D的主要目的是为了以后更加方便的自定义一些界面控件时用到,毕竟大部分app都有个性化的定制界面.以下纪录一些常用的简单作图方法. 想要自定义的控件基本都是继承自UIView,然后重写其drawRect方法.Quartz2D的方法都是纯c的,所有通用的步骤都是先获取上下文,然后再进行内部自定义,最后渲染,而且它的自带函数多半都是CGContext开头的: 1.获取上下文 CGCon

Quartz2D的简单使用概述(二)

接上一篇,继续纪录Quartz2D的一些简单的用法. 举例1:绘制文字         创建一个字符串对象和一个用来给这个字符串对象设置相关属性的字典,使用字符串的绘制方法将它绘制到某个位置或点即可. 矩形的绘制这里不再赘述,主要写一下如何设置文字的属性字典: NSMutableDictionary *dict = [NSMutableDictionary new]; dict[NSForegroundColorAttributeName] = [UIColor redColor];    //

QuartZ2D __ 简单用法 1

一. 简单做一个画板 1. 建立一个UIView类 2. 在.m里建立一个延展 3. 分别定义一个起点, 一个终点的结构体属性 . 在建立一个存储路径的数组 @interface DrawView () { CGPoint _startPoint; CGPoint _endPoint; } @property (nonatomic, strong) NSMutableArray *pathArray; @end 4. 懒加载数组 - (NSMutableArray *)pathArray { i

Quartz2D 之 简单介绍

1. 概述 Quartz2D 是一个二维绘图引擎. 主要功能: 绘制图形:线.矩形.圆.弧 绘制文字 绘制图片 绘制PDF 裁截图片 自定义UI控件 2. 图形上下文 Graphics Context,是绘制图形的环境,就类似现实中的一个画板及画笔.皮擦等整套工具. Quartz2D里面的Graphics Context的类型是CGContextRef. 2.1. 作用 在指定设备.媒介上(屏幕.图片.PDF)绘制图形.设置图形的样式.颜色等属性. 3. 怎么自定义View 在 -(void)D

Quartz2D的简单使用概述(三)

这里交代一些作图时可能遇到的问题: 问题一:当同时画多条线时,在第一条线设置属性后,后面画的所有线都会延用这些属性来绘制.         其实解决的方法很简答,就是在绘制一条新的线条时重置下绘制的属性即可,比如,在画第一条是的属性设置是: CGContextSetLineWidth(ctx,12);    //线条宽度 [[UIColor redColor]set];                   //线条颜色 CGContextSetLineCap(ctx,kCGLineCapRoun

【iOS开发】Quartz2D的简单使用

画直线 //拿到当前画布 CGContextRef ctx = UIGraphicsGetCurrentContext(); // 2.拼接图形(路径) // 设置线段宽度 CGContextSetLineWidth(ctx, 10); // 设置线段头尾部的样式 CGContextSetLineCap(ctx, kCGLineCapRound); // 设置线段转折点的样式 CGContextSetLineJoin(ctx, kCGLineJoinRound); // 设置颜色 CGConte

【iOS开发-80】Quartz2D画图简单介绍:直线/圆形/椭圆/方形以及上下文栈管理CGContextSaveGState/CGContextRestoreGState

- (void)drawRect:(CGRect)rect { //获得当前上下文 CGContextRef ctx=UIGraphicsGetCurrentContext(); //把当前上下文状态保存在栈中 CGContextSaveGState(ctx); //缩放.移动处理(须要放在画图之前进行设置) CGContextScaleCTM(ctx, 0.5, 0.5); CGContextTranslateCTM(ctx, 100, 100); CGContextRotateCTM(ctx

XMG Quartz2D 水印效果。非layer里面手动创建位图上下文,不是layer中drawRect系统自动创建上下文

1. // 1.获取上下文(位图上下文) 这个方法上下文都可以获取.不只是layer上下文 CGContextRef ctx = UIGraphicsGetCurrentContext(); 2. 在viewController中 我们需要手动的创建上下文对象.因为系统不会自动为我们生成上下文 0.获取上下文,之前的上下文都是在view的drawRect方法中获取(跟View相关联的上下文layer上下文) // 目前我们需要绘制图片到新的图片上,因此需要用到位图上下文 / 怎么获取位图上下文,

iOS Quartz2D画图

对于刚接触Quartz2D的同学来说,先了解 上下文 的概念,再从最基础的画线来具体体验Quartz2D的画图步骤 介绍Quart2D :是苹果官方的二维(平面)绘图引擎,同时支持iOS和macOS系统,它的API是纯C语言的,它可以绘制图形.绘制文字.绘制图片.截图.自定义UI控件 在iOS开发中,Quartz2D最常用来自定义UI控件. Quartz2D画图步骤: 1:获取图形上下文对象 2 向图形上下文对象中添加路径,绘图属性等等 3 渲染(把图形上下文中的路径绘制到对应的输出设备上) 介