zoukankan      html  css  js  c++  java
  • Quartz2D二维画图引擎

    Quartz2D二维画图引擎

    这个二维画图引擎的功能很强大

    一般苹果公司xcode 提供给我们的一些UI控件不能满足我们的需求

    所以我们会自己定义控件

    xcode 提供的全部控件都是由这个画图引擎画出来的

    我们能够自己定义一些控件。完毕我们想要完毕的一些特定的功能

    从而解决一些系统自己定义控件实现不了的功能 

    1.基本图形绘制

    * 线段(线宽、线段样式)
    * 矩形(空心、实心、颜色)
    * 三角形、梯形等形状
    * 椭圆圆
    * 圆弧
    * 文字绘制
    * 图片绘制(pattern)

    * 图形上下文栈

    以下是简单的 三角形和矩形的绘制

    图形的绘制是用纯C写出来的。没有面向对象的思想

    所以大家理解起来一定要区分!

    //
    //  MyDraw.m
    //  绘图
    
    
    @implementation MyDraw
    
    //Quartz2D  是一个二维绘图引擎
    //自己定义UI控件
    //裁剪图片
    
    - (void)drawRect:(CGRect)rect {
        
        draw4Rect();
        
    }
    
    void draw4Rect()
    {
        //获得图形上下文
        CGContextRef ctx = UIGraphicsGetCurrentContext();
        
        //绘图形
        CGContextAddRect(ctx, CGRectMake(10, 10, 100, 100));
        
        //绘制图形
        //CGContextStrokePath(ctx);
        
        //实的图形
        CGContextFillPath(ctx);
    }
    void drawTriangle()
    {
    
        // Drawing code
        //1.获得图形上下文
        CGContextRef ctx = UIGraphicsGetCurrentContext();
        
        
        
        //2.拼接图形
        CGContextMoveToPoint(ctx, 10, 10);
        
        //加入一条线段到
        CGContextAddLineToPoint(ctx, 100, 100);
        
        CGContextAddLineToPoint(ctx, 150, 40);
        
        //CGContextAddLineToPoint(ctx, 10, 10);
        
        //连接起点和终点
        CGContextClosePath(ctx);
        //CGContextMoveToPoint(ctx, 20, 20);
        
        //3.渲染显示到view 上面
        //以空心的形式画出来
        CGContextStrokePath(ctx);
    }
    
    
    
    
    @end
    


  • 相关阅读:
    【C++ 系列笔记】03 C++ 面向对象进阶
    【C++ 系列笔记】02 C++ 面向对象基础
    【C++ 系列笔记】01 C++ 与 C
    【JavaScript】简单取随机数 ~~(Math.random() * number)
    英语测试
    Linux指令入门
    RE-攻防世界 T3 insanity
    PWN-攻防世界 level0
    ISCC不会的理论题
    kali linux配置ssh
  • 原文地址:https://www.cnblogs.com/mthoutai/p/6937821.html
Copyright © 2011-2022 走看看