iOS Quartz2D画基本图形

1.线

// 1.获得图形上下文

CGContextRef ctx = UIGraphicsGetCurrentContext();

// 设置线宽

CGContextSetLineWidth(ctx, 5);

// 设置颜色

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

// 设置头尾部样式

CGContextSetLineCap(ctx, kCGLineCapRound);

// 设置转折点的样式

CGContextSetLineJoin(ctx, kCGLineJoinRound);

// 2.设置起点

CGContextMoveToPoint(ctx, 10, 10);

// 3.添加一条线段

CGContextAddLineToPoint(ctx, 100, 100);

// 又添加一条线段

CGContextAddLineToPoint(ctx, 50, 100);

// 4.渲染

CGContextStrokePath(ctx);

注:使用方法可以概括为 获取上下文→设置上下文的属性→设置起点→添加线段→渲染

  头尾部样式有3种:kCGLineCapButt(左图), kCGLineCapRound(右图), kCGLineCapSquare(左图),Butt和Square是一样的

 
 转折点样式有3种:kCGLineJoinBevel(左),kCGLineJoinRound(中),kCGLineJoinMiter(右)

      

2. 三角形

    // 获得上下文

   CGContextRef ctx = UIGraphicsGetCurrentContext();

// 起点

    CGContextMoveToPoint(ctx, 0, 0);

   // 添加一条线

   CGContextAddLineToPoint(ctx, 100, 100);

   // 又添加一条线

   CGContextAddLineToPoint(ctx, 150, 80);

   // 设置空心颜色

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

   // 关闭路径

   CGContextClosePath(ctx);

       // 渲染

   CGContextStrokePath(ctx);

3. 四边形  

   // 获得上下文

   CGContextRef ctx = UIGraphicsGetCurrentContext();

   // 添加矩形

   CGContextAddRect(ctx, CGRectMake(20, 20, 100, 150));

   // 设置空心颜色

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

CGContextStrokePath(ctx);

        注:如果把设置空心颜色的代码替换成设置实心颜色

    // 设置实心颜色

   CGContextSetRGBFillColor(ctx, 1, 0, 0, 1);

CGContextFillPath(ctx);

        如果把设置空心的代码替换成设置颜色

      // 设置颜色 ,set相当于既设置了空心颜色,又设置了实心颜色

    [[UIColor redColor] set];

    CGContextFillPath(ctx);

4.八分之一圆

// 获得上下文

CGContextRef ctx = UIGraphicsGetCurrentContext();

// 起点

CGContextMoveToPoint(ctx, 100, 100);

// 添加线段

CGContextAddLineToPoint(ctx, 150, 100);

// 画圆弧,参数解析: 上下文,圆心x,圆心y,半径,起始角度,结束角度,逆时针(1)or顺时针(0)

CGContextAddArc(ctx, 100, 100, 50, 0, M_PI_4, 0);

// 关闭路径

CGContextClosePath(ctx);

// 设置颜色

[[UIColor redColor] set];

// 渲染

CGContextFillPath(ctx);

5.圆弧

CGContextRef ctx = UIGraphicsGetCurrentContext();

CGContextAddArc(ctx, 100, 100, 50, M_PI_4, M_PI, 0);

[[UIColor redColor] set];

CGContextFillPath(ctx);

6. 椭圆

  CGContextRef ctx = UIGraphicsGetCurrentContext();

CGContextAddEllipseInRect(ctx, CGRectMake(100, 100, 150, 100)); // 只要宽=高,画出来的就是正圆

[[UIColor redColor] set];

CGContextStrokePath(ctx);

7.画图片

UIImage *img = [UIImage imageNamed:@"aa.jpg"];

//    以坐标原点(50,50)画图,长宽是图片的原始长宽

//    [img drawAtPoint:CGPointMake(50, 50)];

//    把图片画在rect里,如果长宽比图片的原始长宽大,会拉伸图片

//    [img drawInRect:CGRectMake(50, 50, 100, 100)];

[img drawAsPatternInRect:CGRectMake(50, 50, 200, 200)];  // 以平铺的方式画在rect里

8.画文字

CGContextRef ctx = UIGraphicsGetCurrentContext();

// 画rect

CGRect cubeRect = CGRectMake(50, 50, 100, 100);

CGContextAddRect(ctx, cubeRect);

CGContextFillPath(ctx);

// 在rect画文字

NSString *str = @"试试Quartz2D画文字...";

NSMutableDictionary *attrs = [NSMutableDictionary dictionary];

attrs[NSForegroundColorAttributeName] = [UIColor redColor]; // 文字颜色

attrs[NSFontAttributeName] = [UIFont systemFontOfSize:50]; // 字体

[str drawInRect:cubeRect withAttributes:attrs];

时间: 2024-10-29 13:50:51

iOS Quartz2D画基本图形的相关文章

iOS Quartz2D 渐变图形 CGGradient CGShading

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

iOS开发UI篇—Quartz2D使用(图形上下文栈)

iOS开发UI篇-Quartz2D使用(图形上下文栈) 一.qurza2d是怎么将绘图信息和绘图的属性绘制到图形上下文中去的? 说明: 新建一个项目,自定义一个view类和storyboard关联后,重写该类中的drowrect方法. 画线的三个步骤: (1)获取上下文 (2)绘图 (3)渲染 要求:画两条单独的线 代码和效果图: 1 - (void)drawRect:(CGRect)rect 2 { 3 //获取上下文 4 CGContextRef ctx=UIGraphicsGetCurre

iOS 使用UIBezierPath和CAShapeLayer画各种图形

CAShapeLayer 是 CALayer 的子类,但是比 CALayer 更灵活,可以画出各种图形,当然,你也可以使用其他方式来画,随你. 杂谈 在 CAShapeLayer 中,也可以像 CALayer 一样指定它的 frame 来画,就像这样: let layer = CAShapeLayer() layer.frame = CGRectMake(110, 100, 150, 100) layer.backgroundColor = UIColor.blackColor().CGColo

iOS quartzCore第五章——CAShapeLayer画各种图形 结合UIBezierPath

CAShapeLayer 是 CALayer 的子类,但是比 CALayer 更灵活,可以画出各种图形,当然,你也可以使用其他方式来画,随你. 首先CAShapeLayer 自身有path ,fillColor ,fillRule ,strokeColor ,strokeStart , strokeEnd , lineWidth(线宽,用点表示单位) ,miterLimit ,lineCap(线条结尾的样子) , lineJoin(线条之间的结合点的样子), lineDashPhase 和lin

iOS——Quartz2D

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

Quartz2D使用(图形上下文栈)

Quartz2D使用(图形上下文栈) 一.qurza2d是怎么将绘图信息和绘图的属性绘制到图形上下文中去的? 说明: 新建一个项目,自定义一个view类和storyboard关联后,重写该类中的drowrect方法. 画线的三个步骤: (1)获取上下文 (2)绘图 (3)渲染 要求:画两条单独的线 代码和效果图: 1 - (void)drawRect:(CGRect)rect 2 { 3 //获取上下文 4 CGContextRef ctx=UIGraphicsGetCurrentContext

iOS Quartz2D 透明层 TransparencyLayer

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

Java界面编程-建立一个可以画出图形的简单框架

引子:总共使用3个.java文件,建立一个简单界面编程的框架. 第1个文件:NotHelloWorldComponent.java //NotHelloWorldComponent.java 1 import java.awt.*; 2 import java.awt.geom.*; 3 import javax.swing.*; 4 5 public class NotHelloWorldComponent extends JComponent { 6 public static final

iOS之画饼图

iOS之画饼图 1.效果图如下 2.画饼图实现步骤如下: 1.在main.storyboard中拖入一个UIView控件,并设置其Custom Class 为HMPieView.如下图 2.新建HMPieView类 // // HMPieView.h // 03-饼图 // #import <UIKit/UIKit.h> @interface HMPieView : UIView @end // // HMPieView.m // 03-饼图 // #import "HMPieVie