iOS Quartz2D 常用方法总结

- (void)drawRect:(CGRect)rect
{

//    这里是Layer Graphics Context

CGContextRef  ctx = UIGraphicsGetCurrentContext();

//    绘制图形

//    设置起点

CGContextMoveToPoint(ctx, 10, 10);

//    设置终点 ctx 是上下文

CGContextAddLineToPoint(ctx, 10, 100);

//    绘制图形(渲染到layer上)view

CGContextStrokePath(ctx);

}

// Only override drawRect: if you perform custom drawing.

// An empty implementation adversely affects performance during animation.

- (void)drawRect:(CGRect)rect
{

// Drawing code

//    获得图形的上下文

CGContextRef ctx = UIGraphicsGetCurrentContext();

//    绘制图形的起点

CGContextMoveToPoint(ctx, 50, 0);

//    设置第二个点

CGContextAddLineToPoint(ctx, 0, 100);

//    设置第三个点

CGContextAddLineToPoint(ctx, 100, 100);

//    进行封口操作

CGContextClosePath(ctx);

//    渲染

CGContextStrokePath(ctx);

CGContextAddRect(ctx, CGRectMake(50, 100, 50, 100));

[[UIColor redColor]set];

//    CGContextStrokePath(ctx);

CGContextFillPath(ctx);

}

// Only override drawRect: if you perform custom drawing.

// An empty implementation adversely affects performance during animation.

//当自定义的view即将显示的时候 就会调用这个方法

- (void)drawRect:(CGRect)rect
{

//    这里是Layer Graphics Context

CGContextRef  ctx = UIGraphicsGetCurrentContext();

//    绘制图形

//    设置起点

CGContextMoveToPoint(ctx, 10, 10);

//    设置终点 ctx 是上下文

CGContextAddLineToPoint(ctx, 10, 100);

CGContextAddLineToPoint(ctx, 100, 100);

//    设置绘图状态

//    设置线条颜色

CGContextSetRGBStrokeColor(ctx, 1.0, 0, 0, 1.0);

//    设置线条宽度

CGContextSetLineWidth(ctx, 10.2);

//    设置线条圆头

CGContextSetLineCap(ctx, kCGLineCapRound);

//    设置线条转角的圆形

CGContextSetLineJoin(ctx, kCGLineJoinRound);

//    绘制图形(渲染到layer上)view

CGContextStrokePath(ctx);

}

新建一个起点

void CGContextMoveToPoint(CGContextRef c, CGFloat x, CGFloat y)

添加新的线段到某个点

void CGContextAddLineToPoint(CGContextRef c, CGFloat x, CGFloat y)

添加一个矩形

void CGContextAddRect(CGContextRef c, CGRect rect)

添加一个椭圆

void CGContextAddEllipseInRect(CGContextRef context, CGRect rect)

添加一个圆弧

void CGContextAddArc(CGContextRef c, CGFloat x, CGFloat y,

CGFloat radius, CGFloat startAngle, CGFloat endAngle, int clockwise)

/**

*  绘制平行线

*

*  @param rect <#rect description#>

*/

- (void)drawRect:(CGRect)rect
{

//    注意这是一个C语言的函数 没有*

CGContextRef  ctx = UIGraphicsGetCurrentContext();

CGPoint addLines[] = {CGPointMake(10.0, 200),CGPointMake(50.0, 100),CGPointMake(90.0, 200),CGPointMake(130.0, 100),CGPointMake(170.0, 200),CGPointMake(210.0, 100)};

//    绘制

CGContextStrokeLineSegments(ctx, addLines, sizeof(addLines)/sizeof(addLines[0]));

}

- (void)drawRect:(CGRect)rect
{

//    绘制渐变色

CGContextRef ctx = UIGraphicsGetCurrentContext();

CGColorSpaceRef color = CGColorSpaceCreateDeviceRGB();//创建色彩空间

//    开始设置颜色

UIColor * start = [UIColor blueColor];

CGFloat * startColorComp = (CGFloat *)CGColorGetComponents([start CGColor]);

//    设置结束颜色

UIColor *end = [UIColor yellowColor];

CGFloat * endColorComp = (CGFloat *)CGColorGetComponents([end CGColor]);

//  创建颜色分量数组

CGFloat colorComponents[8]
= {

startColorComp[0],startColorComp[1],startColorComp[2],startColorComp[3],endColorComp[0],endColorComp[1],endColorComp[2],endColorComp[3],

};

//    指定渐变开始位置和渐变结束位置

CGFloat colorIndices[2]
= {0.0f ,1.0f,};

//    创建渐变

CGGradientRef gradient = CGGradientCreateWithColorComponents(color,
(const CGFloat *)&colorComponents, (const CGFloat *)&colorIndices, 2);

CGPoint startPoint ,endPoint;

startPoint = CGPointMake(120, 260);

endPoint = CGPointMake(200.0, 200);

CGContextDrawLinearGradient(ctx, gradient, startPoint, endPoint, 0);

}

图片的填充

- (void)drawRect:(CGRect)rect
{

UIImage * image = [UIImage imageNamed:@"abc"];

CGContextRef ctx = UIGraphicsGetCurrentContext();

CGRect re = CGRectMake(60, 60, 60, 60);

CGContextClipToRect(ctx, CGRectMake(0, 0, 320, 480));

CGContextDrawTiledImage(ctx, re, image.CGImage);

}

时间: 2024-10-29 15:13:18

iOS Quartz2D 常用方法总结的相关文章

iOS Quartz2D 渐变图形 CGGradient CGShading

最近在学习iOS Quartz2D二维图形绘制--->渐变效果 Quartz2D 渐变 Quartz提供了两个不透明数据odgago创建渐变: CGShadingRef 和 CGGradientRef 可以使用任何一种来创建轴向(axial)或径向(radial)渐变.一个渐变是从一个颜色到另一个颜色的填充 一个轴向渐变(也成为线性渐变) 不说废话直接上干货, 代码和注释还算全,不懂的自行百度吧 <span style="font-size:18px;">// Qua

iOS Quartz2D 透明层 TransparencyLayer

最近在研究iOS Quartz2D图形绘制引擎----->透明层TransparencyLayer 透明层 通过组合两个或多个对象来生成一个组合图形, 组合图形被看成是单一对象, 当需要在一组对象上使用特效的时候, 透明层非常有用 透明层的工作方式 Quartz2D的透明层类似很多流行的图形应用中的层, 层是独立的实体, Quartz维护为每个上下文维护一个透明栈, 并且透明层可以嵌套的, 但由于层通常是栈的一部分, 所以我们不能单独操作它们, 通过调用CGContextBeginTranspa

iOS Quartz2D画图

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

iOS Quartz2D绘制线、矩形、弧、圆、文字、图片

利用Quartz2D中提供的图层上下文 Layer Graphics Context,进行简单绘制线.矩形.弧.圆.文字.图片 在storyBoard中得拖入控制器,添加多个UIView控件,并把各个UIView的class修改为自定义的类. 如: 绘制线: // // HJLineView.m // 画线三角矩形圆 // // Created by HJiang on 15/1/2. // Copyright (c) 2015年 HJiang. All rights reserved. //

IOS Quartz2D简介

Quartz2D 简介( 后续会有相关应用) 第一部分 绘制直线 代码示例: - (void)drawRect:(CGRect)rect{ //获取图形上下文 CGContextRef cxContext = UIGraphicsGetCurrentContext(); //开始画图 //设置直线起点 CGContextMoveToPoint(cxContext, 0, 20); //设置直线中点 CGContextAddLineToPoint(cxContext, 100, 20); //渲染

iOS——Quartz2D

0. 复习. 1.基本图形绘制 * 线段(线宽.线段样式) * 矩形(空心.实心.颜色) * 三角形.四边形等形状 1> 说明 - (void)drawRect:(CGRect)rect 什么时候调用.调用次数等 - 当 view 第一次被显示的时候调用(调用一次) - 或者是重绘事件被触发的时候 - 不要手动去调用这个方法 - 手动调用重绘方法 setNeedsDisplay 或者 setNeedsDisplayInRect: 2> 说明为什么要在 - (void)drawRect:(CGR

iOS Quartz2D画基本图形

1.线 // 1.获得图形上下文 CGContextRef ctx = UIGraphicsGetCurrentContext(); // 设置线宽 CGContextSetLineWidth(ctx, 5); // 设置颜色 CGContextSetRGBStrokeColor(ctx, 0, 0, 1, 1); // 设置头尾部样式 CGContextSetLineCap(ctx, kCGLineCapRound); // 设置转折点的样式 CGContextSetLineJoin(ctx,

IOS AppDelegate常用方法

// 当应用程序启动完毕的时候就会调用(系统自动调用) - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch. NSLog(@"didFinishLaunchingWithOptions"); ret

iOS Quartz2D模拟下载进度条

效果图: 步骤: 1.在StoryBoard中拖入一个控制器添加UISlider和UIView 2个控件 2.在控制器中连线监听UISlider的值变化事件.HJProgressView属性,把变化的值传递给自定义UIView 3.自定义HJProgressView重写progressValue属性set方法,重绘视图中得文字和弧度值 控制器代码: #import "ViewController.h" #import "HJProgressView.h" @inte