今天原本想模仿2048 游戏的。 但是在设计背景环境时,涉及到绘图的知识!于是就开始对绘图进行了一翻学习。

若想自己绘图必须 写自己的View(继承UICView);然后重写UIView 中的 drawRect:rect 方法

-(void)drawRect:(CGRent)rect{

//1 硬编码 获取当前视图上下文,(很重要,在绘图时都是依据上下文来进行的)

CGContextRef context=UIGraphicsGetCurrentContext();

//2、绘制长方形,并且带背景颜色

CGContextSetFillColorWithColor(context,[UIColor colorWithRed:0.1 green:0.3 blue:0.8 alpha:1].CGColor);//这里red,blue, green,alpha 值必须在0~1 之间,这里是c 函数,因此参数也需要C函数里面值,因此这里不能用UIColor 对象,而是里面的属性CGColor。

//2.1 执行填充操作, 到这里长方形绘制完成

CGContextFillRect(context,CGRectMake(0,0,320,320));//后面指定的

//3.1 开始画线条

CGContextSetLineWidth(context,4.0);//设置画刷粗细为4个像素

CGContextSetStrokeColorWithColor(context,[UIColor redColor].CGColor);//设置画笔颜色

CGContextMoveToPoint(context,0.0f,0.0f);//可以设想将画笔移到起点位子(线条的起点位子)

CGContextAddLineToPoint(context,10.0f,10.0f);//两点成一线,

CGContext AddLineToPoint(context,20.0f,10.0f);// 类似队列任意添加点集合

//一切准备好后开始绘图

CGContextStrokePath(context);//执行完成后 会出现一跳红色折线

}

---下面是绘制 带圆角长方形

- (void)drawRect:(CGRect)rect {

CGFloat width = rect.size.width;

CGFloat height = rect.size.height; // 简便起见,这里把圆角半径设置为长和宽平均值的1/10

CGFloat radius = (width + height) * 0.05; // 获取CGContext,注意UIKit里用的是一个专门的函数 CGContextRef context = UIGraphicsGetCurrentContext(); // 移动到初始点

CGContextMoveToPoint(context, radius, 0); // 绘制第1条线和第1个1/4圆弧

CGContextAddLineToPoint(context, width - radius, 0);

CGContextAddArc(context, width - radius, radius, radius, -0.5 * M_PI, 0.0, 0); // 绘制第2条线和第2个1/4圆弧 CGContextAddLineToPoint(context, width, height - radius);

CGContextAddArc(context, width - radius, height - radius, radius, 0.0, 0.5 * M_PI, 0); // 绘制第3条线和第3个1/4圆弧

CGContextAddLineToPoint(context, radius, height);

CGContextAddArc(context, radius, height - radius, radius, 0.5 * M_PI, M_PI, 0); // 绘制第4条线和第4个1/4圆弧 CGContextAddLineToPoint(context, 0, radius);

CGContextAddArc(context, radius, radius, radius, M_PI, 1.5 * M_PI, 0); // 闭合路径 CGContextClosePath(context); // 填充半透明黑色

CGContextSetRGBFillColor(context, 0.0, 0.0, 0.0, 0.5);

CGContextDrawPath(context, kCGPathFill);

}

Quartz 2D--长方形和线条绘图的更多相关文章

  1. Core Graphics框架 利用Quartz 2D绘图

    首先,什么是Core Graphics和Quartz 2D? Core Graphics:是基于Quartz 2D绘图引擎的一个C语言的API绘图框架.它也是iOS开发中最基本的框架(Framewor ...

  2. iOS基础 - Quartz 2D绘图的基本步骤

    一.使用Quartz 2D绘图的基本步骤 1) 获取上下文context(绘制图形的地方) 2) 设置路径(路径是用来描述形状的) 3)  将路径添加到上下文 4)  设置上下文属性(设置颜色,线宽, ...

  3. iOS基础 - Quartz 2D绘图

    一.Quartz 2D Quartz 2D是一个二维图形绘制引擎,支持iOS环境和Mac OS X环境. Quartz 2D以PDF的规范为基础的图形库,用来绘制二维文字和图形,允许相同的绘图指令在任 ...

  4. iOS - Quartz 2D 二维绘图

    1.Quartz 2D 简介 Quartz 2D 属于 Core Graphics(所以大多数相关方法的都是以 CG 开头),是 iOS/Mac OSX 提供的在内核之上的强大的 2D 绘图引擎,并且 ...

  5. iOS 2D绘图 (Quartz 2D) 概述

    本篇博客原文地址:http://blog.csdn.net/hello_hwc?viewmode=list 由于自己的项目需要,从网络上下载了许多关于绘制图形的demo,只是用在自己的项目中,很多地方 ...

  6. Quartz 2d绘图

    今天看了一下Quartz 2D绘图,我只想说:不要把绘图和动画那些东西当做一个很复杂的东西,其实只要你认真看还是可以理解的.他们并不难.啰嗦了几句,现在直接进入正题: 前提是我们必须新建一个singl ...

  7. iOS 2D绘图详解(Quartz 2D)之路径(点,直线,虚线,曲线,圆弧,椭圆,矩形)

    前言:一个路径可以包含由一个或者多个shape以及子路径subpath,quartz提供了很多方便的shape可以直接调用.例如:point,line,Arc(圆弧),Curves(曲线),Ellip ...

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

    前言:最近在研究自定义控件,由于想要彻底的定制控件的视图还是要继承UIView,虽然对CALayer及其子类很熟练,但是对Quartz 2D这个强大的框架仍然概念模棱两可.于是,决定学习下,暂定7篇文 ...

  9. 关于Quartz 2D绘图的简单使用

    Quartz 2D是一个二维图形绘制引擎,支持iOS环境和Mac OS X环境,Quartz 2D的API可以实现许多功能,如:基于路径的绘图.透明度.阴影.颜色管理.反锯齿.PDF文档生成和PDF元 ...

随机推荐

  1. 运行最快的安卓模拟器VirtualBox安装教程

    网上有多种多样的安卓模拟器,蓝手指啊,百度的MTC等等,但是他们的运行速度,与电脑的切合度都没有VirtualBox安装Android-X86结合在一起来的快. 工具/原料 电脑一台 网络 方法/步骤 ...

  2. dede如何新建一个ajax服务端输出文件

    <?phprequire_once(dirname(__FILE__)."/include/common.inc.php");AjaxHead();    $dsql-> ...

  3. noip2016题解汇总

    [uoj#260]玩具谜题 传送门 http://uoj.ac/problem/260 分析 模拟. int n,m; int dir[N]; char nam[N][L]; int a[M],s[M ...

  4. 在VBA中调用工作表函数

    虽然VBA几乎可以完成所有工作表函数的功能,但是有时候在无法打开思路的时候,适当调用一些工作表函数也未尝不可,在VBA中调用工作表函数需要用到 WorksheetFunction对象,例如: Work ...

  5. [saiku] 将saiku自带的H2嵌入式数据库迁移到本地mysql数据库

    saiku数据库的表和用户默认创建是在启动项目的时候,通过初始化 saiku-beans.xml 中的 h2database 这个 bean 执行org.saiku.service.Database类 ...

  6. jquery学习笔记1

    (1) jQuery的Id选择器: $("#btnShow") (2) 事件绑定函数 bind() $("#btnAdd").bind("click& ...

  7. Qt之QPauseAnimation

    简述 QPauseAnimation类为QSequentialAnimationGroup提供了一个暂停. 如果你想为QSequentialAnimationGroup动画之间添加延迟,可以插入一个Q ...

  8. [转载]使用SoapUI进行负载测试

    使用了SoapUI进行负载测试 http://www.cnblogs.com/zerotest/p/4668918.html 负载测试是相当独特的,我们已经创建了一个功能,使您能够快速创建性能测试,并 ...

  9. MyBatis核心配置文件模版

      <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLI ...

  10. Servlet复习1: 一个简单的Servlet的使用

    Servlet学习 1. Servlet与JSP的关系 2. Servlet的声明周期 3. 一个简单的Servlet的使用方法 什么是Servlet? 什么又是JSP? 继承了javax.servl ...