Quartz 2D绘图基础:CGContextRef

原创 2015年11月19日 23:08:14

利用storyboard,自定义一个继承自UIView的类,在属性面板中重定义主视图的类。在自定义的类中重写drawRect:方法即可。


//

//  WBGeometryView.m

//  1119绘制集合图形

//

//  Created by weibiao on 15/11/19.

//  Copyright © 2015 weibiao. All rights reserved.

//


#import "WBGeometryView.h"


@implementation WBGeometryView


/*

// 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();// 获取绘图上下文

    CGContextSetLineWidth(ctx, 16);// 设置线宽

    CGContextSetRGBStrokeColor(ctx, 0, 1, 0, 1);// 设置线的颜色

    

    // 下面绘制三个线的端点测试绘制情况

    // 定义4个点,绘制线段

    const CGPoint points[] = {CGPointMake(10, 20),CGPointMake(100, 20),CGPointMake(100, 20),CGPointMake(20, 50)};

    CGContextStrokeLineSegments(ctx, points, 4);// 绘制线段,默认不绘制端点

    CGContextSetLineCap(ctx, kCGLineCapSquare);// 方形端点

    

    const CGPoint points1[] = {

        CGPointMake(110, 20),CGPointMake(200, 20),CGPointMake(200, 20),CGPointMake(120, 50)

    };

    CGContextStrokeLineSegments(ctx, points1, 4);

    CGContextSetLineCap(ctx, kCGLineCapRound);

    

    const CGPoint points2[] = {CGPointMake(210, 20),CGPointMake(300, 20),CGPointMake(300, 20),CGPointMake(220, 50)};

    CGContextStrokeLineSegments(ctx, points2, 4);

    CGContextSetLineCap(ctx, kCGLineCapButt);

    

    // 绘制线段测试电线模式

    CGContextSetLineWidth(ctx, 10);// 设置线宽

    CGFloat patterns1[] = {6,10};

    CGContextSetLineDash(ctx, 0, patterns1, 1);// 设置线段的点线模式,实线宽6,间距为10

    const CGPoint points3[]  = {CGPointMake(40, 65),CGPointMake(280, 65)};// 定义两个点,

    CGContextStrokeLineSegments(ctx, points3, 2);// 绘制线段

     // 设置点线模式:实线宽6,间距宽10,但第一个实线宽为3

    CGContextSetLineDash(ctx, 3, patterns1, 1);

    

    // 定义两个点,绘制线段

    const CGPoint points4[] = {CGPointMake(40, 85),CGPointMake(280, 85)};

    CGContextStrokeLineSegments(ctx, points4, 2);// 绘制线段

    

    CGFloat patterns2[] = {5,1,4,1,3,1,2,1,1,1,1,2,1,3,1,4,1,5};

    CGContextSetLineDash(ctx, 0, patterns2, 18);

    

    const CGPoint points5[] = {CGPointMake(40, 105),CGPointMake(280, 105)};

    CGContextStrokeLineSegments(ctx, points5, 2);

    

    // ----下面填充矩形

    CGContextSetStrokeColorWithColor(ctx, [UIColor blueColor].CGColor);

    CGContextSetLineWidth(ctx, 14);

    CGContextSetFillColorWithColor(ctx, [UIColor redColor].CGColor);

    CGContextFillRect(ctx, CGRectMake(30, 120, 120, 60));

    CGContextSetFillColorWithColor(ctx, [UIColor yellowColor].CGColor);

    CGContextFillRect(ctx, CGRectMake(80, 160, 120, 60));

    

    // 绘制矩形边框

    CGContextSetLineDash(ctx, 0, 0, 0);// 取消设置点线模式

    CGContextStrokeRect(ctx, CGRectMake(30, 230, 120, 60));// 绘制一个矩形边框

    CGContextSetStrokeColorWithColor(ctx, [UIColor purpleColor].CGColor);// 设置线条颜色

    CGContextSetLineJoin(ctx, kCGLineJoinRound);// 设置线条连接点的形状

    CGContextStrokeRect(ctx, CGRectMake(80, 260, 120, 60));

    CGContextSetRGBStrokeColor(ctx, 1.0, 0, 1.0, 1.0);// 设置线条颜色

    CGContextSetLineJoin(ctx, kCGLineJoinBevel);// 设置连接点形状

    

    CGContextStrokeRect(ctx, CGRectMake(130, 290, 120, 60));// 绘制一个矩形边框

    // 设置线条颜色

    CGContextSetRGBStrokeColor(ctx, 0, 1, 1, 1);

    

    

    // 下面绘制和填充一个椭圆

    CGContextStrokeEllipseInRect(ctx, CGRectMake(30, 380, 120, 60));// 绘制一个椭圆

    CGContextSetRGBFillColor(ctx, 1, 0, 1, 1);// 设置填充颜色

    CGContextFillEllipseInRect(ctx, CGRectMake(180, 380, 120, 60));

    

}



@end



相关文章推荐

iOS Quartz 2D绘图用CGContextRef绘制三角形 —— HERO博客

iOS Quartz 2D绘图用CGContextRef绘制三角形。

iOS 绘图机制简介,Quartz 2D绘图用CGContextRef绘制音频波形图 —— HERO博客

iOS绘图机制简介,Quartz 2D绘图用CGContextRef绘制音频波形图。

iOS绘图_Quartz 2D基础

1.Quartz 2D简介Quartz 2D是iOS中的绘图框架,他是基于Core Graphics框架的,是一个强大的二维图像绘制引擎。我们平时用到的UIKit组件都是由Core Graphics进...

iOS开发之quartz 2d绘图基础

一、Quartz2D的简介 1⃣️Quart2D是CoreGraphic的一部分,基于C的API -图形的上下文(Graphics Context) 数据类型,封装了Quartz绘制...

1 、Quartz 2D绘图基础

Quartz 2D绘图 Quartz 2D绘图的核心API是CGContextRef,该API专门用于绘制各种图形。 关注微信公众号:ioscoding ,分享优质iOS编程技术。by:shu...

iOS-Quartz2D绘图的基础用法总结

在UIView的drawRect:方法中具体使用Quartz2D 1获取当前上下文 CGContextRef ctx = UIGraphicsGetCurrentContext();  2拼接图形(界...

quartz2D绘图代码(使用路径)

  • 2015年04月08日 12:19
  • 43KB
  • 下载

iOS开发UI-利用Quartz2D 实现基本绘图(画三角形、矩形、圆、圆弧)

1.画三角形  运行结果如下 2.具体实现步骤 2.1首先新建一个project,然后自定义一个view 2.2代码 #import "htingShapeView.h" @implem...

二:UIKit与Quartz 2D绘图技术学习

文中内容均来自《IOS图形图像、动画和多媒体编程技术最佳实践》,若有侵犯版权,请告知笔者,笔者必将删除写在前面的话: 在IOS中绘图技术主要包括:UIKit、Quartz 2D、Core Anima...

IOS开发(107)之Quartz 2D绘图

1 前言 使用Quartz 2D绘图时候,我们常会用到UIView的子类,想该类的drawRect:方法中添加Quartz函数调用。每次需要重绘视图时候都会调用该方法。 2 详述 在Quartz...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Quartz 2D绘图基础:CGContextRef
举报原因:
原因补充:

(最多只允许输入30个字)