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



Quartz 2D绘图基础:CGContextRef

12.2  Quartz 2D绘图 Quartz 2D绘图的核心API是CGContextRef,该API专门用于绘制各种图形。 12.2.1  Quartz 2D绘图基础:CGContextRe...
  • qq_22981537
  • qq_22981537
  • 2015年05月26日 15:10
  • 167

Quartz 2D 绘图基础

Quartz 2D是一个二维绘图引擎。Quartz 2D的API是C语言,来自于CoreGraphics框架。 Quartz 2D以PDF的规范为基础的图形库,用来绘制二维文字和图形,允许相同的绘图指...
  • cljAndPean
  • cljAndPean
  • 2015年12月23日 17:27
  • 182

1 、Quartz 2D绘图基础

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

iOS开发之quartz 2d绘图基础

一、Quartz2D的简介 1⃣️Quart2D是CoreGraphic的一部分,基于C的API -图形的上下文(Graphics Context) 数据类型,封装了Quartz绘制...
  • u011200206
  • u011200206
  • 2015年03月10日 17:18
  • 124

iOS 2D绘图详解(Quartz 2D)之概述

原创Blog,转载请注明出处 http://blog.csdn.net/hello_hwc?viewmode=list 我的stackoverflow前言:最近在研究自定义控件,由于想要彻底的...
  • Hello_Hwc
  • Hello_Hwc
  • 2015年10月21日 11:55
  • 3314

Quartz 2D Programming Guide

Quartz 2D Programming Guide 官方文档地址: https://developer.apple.com/library/ios/#documentation/Graphic...
  • likendsl
  • likendsl
  • 2012年06月16日 17:17
  • 1512

2D绘图基础

系统通过提供的Canvas对象来提供绘图方法。提供可很多API,如:drawPoint、drawLine、drawRect、drawVertices、drawArc、drawCircle等。 关于P...
  • mouse12138
  • mouse12138
  • 2016年04月26日 13:28
  • 333

利用Quartz 2D实现图片的旋转、缩放、裁剪

本文将为大家介绍常见的IOS图像处理操作包括以下四部分:旋转,缩放,裁剪以及像素和UIImage之间的转化,主要使用的知识是quartz2D。Quartz2D是CoreGraphics框架中的一个重要...
  • awaylin113
  • awaylin113
  • 2014年08月25日 10:27
  • 1305

浅谈 Quartz2D 在开发中的用处 - 画图形

转载自:http://www.jianshu.com/p/d5183ee5371d 在了解到 Quartz2D 的用途以后是不是打算马上动手?虽然MJ老师说会枯燥,但是自己动起手来其...
  • liangliang2727
  • liangliang2727
  • 2016年09月09日 21:35
  • 457

IOS画图库 - Core Graphics/QuartZ 2D 和OpenGL ES

转自:http://blog.sina.com.cn/s/blog_79fded950101h3g4.html +demo 连接  http://blog.csdn.net/zhibude...
  • u010013695
  • u010013695
  • 2014年02月28日 12:59
  • 2300
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Quartz 2D绘图基础:CGContextRef
举报原因:
原因补充:

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