zoukankan      html  css  js  c++  java
  • Quartz 2D在ios中的使用简述二:创建画布

      在iOS中使用Quartz画图时,第一步就是要获取画布(图形上下文),然后再画布上做各种操作。先看下CoreGraphics.h这个头文件,就可以知道能够创建多少种上下文类型。

    #include <CoreGraphics/CGBase.h>
    
    #include <CoreGraphics/CGAffineTransform.h>
    #include <CoreGraphics/CGBitmapContext.h>
    #include <CoreGraphics/CGColor.h>
    #include <CoreGraphics/CGColorSpace.h>
    #include <CoreGraphics/CGContext.h>
    #include <CoreGraphics/CGDataConsumer.h>
    #include <CoreGraphics/CGDataProvider.h>
    #include <CoreGraphics/CGError.h>
    #include <CoreGraphics/CGFont.h>
    #include <CoreGraphics/CGFunction.h>
    #include <CoreGraphics/CGGeometry.h>
    #include <CoreGraphics/CGGradient.h>
    #include <CoreGraphics/CGImage.h>
    #include <CoreGraphics/CGLayer.h>
    #include <CoreGraphics/CGPDFArray.h>
    #include <CoreGraphics/CGPDFContentStream.h>
    #include <CoreGraphics/CGPDFContext.h>
    #include <CoreGraphics/CGPDFDictionary.h>
    #include <CoreGraphics/CGPDFDocument.h>
    #include <CoreGraphics/CGPDFObject.h>
    #include <CoreGraphics/CGPDFOperatorTable.h>
    #include <CoreGraphics/CGPDFPage.h>
    #include <CoreGraphics/CGPDFScanner.h>
    #include <CoreGraphics/CGPDFStream.h>
    #include <CoreGraphics/CGPDFString.h>
    #include <CoreGraphics/CGPath.h>
    #include <CoreGraphics/CGPattern.h>
    #include <CoreGraphics/CGShading.h>
    

      可以看到,可以创建的上下文包括:  

    //图片
    CGContextRef CGBitmapContextCreate
    //layer(UIView)
    CGContextRef CGLayerGetContext
    //pdf类型
    CGContextRef CGPDFContextCreate

      我们再看下UIGraphics.h这个头文件,里面已经提供这3种上下文创建的封装给UIKit使用的方法,在普通的情况下,使用UIGraphics中的方法即可,而且画布已经做了坐标的翻转。

     

    UIKIT_EXTERN CGContextRef UIGraphicsGetCurrentContext(void) CF_RETURNS_NOT_RETAINED;

    表示是个弱引用类型,直接使用,不用释放。

            UIGraphicsBeginImageContext(self.bounds.size);
            CGContextRef context=UIGraphicsGetCurrentContext();
    
            CGContextSetRGBFillColor(context, 1, 0, 0, 1);
            CGContextSetRGBStrokeColor(context, 0, 1, 0, 1);
            CGContextFillRect(context, CGRectMake(0, 100, 100, 100));
            NSString *text=@"文字";
            UIFont *font=[UIFont systemFontOfSize:14];
            [text drawAtPoint:CGPointMake(0, 200) withAttributes:font.fontDescriptor.fontAttributes];
            UIImage *img=[UIImage imageNamed:@"gg.jpg"];
            [img drawInRect:CGRectMake(0, 300, 100, 100)];
            CGImageRef cgimg = CGBitmapContextCreateImage(context);
            UIImage *resultImg = [UIImage imageWithCGImage:cgimg];
            CGImageRelease(cgimg);
  • 相关阅读:
    AI:IPPR的数学表示-CNN可视化语义分析
    AI:IPPR的模式生成-学习/训练方式(基本结构)
    三维重建面试13X:一些算法试题-今日头条AI-Lab
    AI:IPPR的数学表示-CNN基本结构分析( Conv层、Pooling层、FCN层/softmax层)
    AI:IPPR的数学表示-CNN结构/参数分析
    AI:IPPR的数学表示-CNN方法
    AI:PR的数学表示-传统方法PR
    AI:模式识别的数学表示(集合—函数观点)
    三维重建12:室内三维物体的位姿识别论文列表
    三维重建11:点云的全局特征总结
  • 原文地址:https://www.cnblogs.com/bandy/p/4421855.html
Copyright © 2011-2022 走看看