zoukankan      html  css  js  c++  java
  • iOS:quartz2D绘图(在PDF文件上绘制图片)

    quartz2D还可以在PDF文件上绘制图片,它有自己的PDF Graphics Context上下文,通过UIGraphicsBeginPDFContextToFile方法开始上下文后就可以绘制图片了,最后记得使用UIGraphicsEndPDFContext()方法结束上下文。绘制pdf时,既可以绘制单页pdf,也可以绘制多页pdf成一本书,在绘制开始时,使用UIGraphicsBeginPDFPage()开始新的一页这是非常重要的。下面演示绘制单页pdf和多页的pdf。

    具体的实例如下:

    //将图片绘制在单页的pdf上

    #parma mark -创建单页pdf

    -(void)createPDF
    {
        //设置pdf文件的路径
        NSArray *documents = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
        
        //文档目录
        NSString *document = [documents lastObject];
        //NSLog(@"%@",document);
        
        //拼接pdf路径
        NSString *PDFpath = [document stringByAppendingPathComponent:@"img.pdf"];
        
        //开始pdf的上下文
        UIGraphicsBeginPDFContextToFile(PDFpath, CGRectMake(0, 0, 320, 480), nil);
        
        //获取当前的绘图上下文
        CGContextRef context = UIGraphicsGetCurrentContext();
        
        //开始pdf新的一页
        UIGraphicsBeginPDFPage();
        
        //绘制圆形
        CGContextAddEllipseInRect(context, CGRectMake(100, 100, 100, 100));
        [[UIColor redColor]set];
        CGContextDrawPath(context, kCGPathEOFillStroke);
        
        //绘制文字
        NSString *str = @"this is a image page";
        [str drawAtPoint:CGPointMake(50, 250) withAttributes:@{NSForegroundColorAttributeName:[UIColor redColor],NSFontAttributeName:[UIFont systemFontOfSize:30]}];
        
        //结束pdf的上下文
        UIGraphicsEndPDFContext();
    }

    在沙盒目录下创建img.pdf文件和绘制在img.pdf文件上的圆图形和文字的截图为:

      

    //将多张图片绘制在多页的pdf上

    首先导入多张笑脸图片,导入的素材截图为:

    #parma mark -创建多页pdf

    -(void)createPDFBook
    {
        //设置pdf文件的路径
        NSArray *documents = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
        
        //文档目录
        NSString *document = [documents lastObject];
        //NSLog(@"%@",document);
        
        //拼接pdf路径
        NSString *PDFpath = [document stringByAppendingPathComponent:@"imageBook.pdf"];
        
        //开始pdf的上下文(参数:设置pdf路径、设置pdf大小、附带pdf字典信息)
        UIGraphicsBeginPDFContextToFile(PDFpath, CGRectMake(0, 0, 320, 480), nil);
        
        
        //绘制图片
        for (int i = 0; i<9; i++)
        {
            //开始新的一页
            UIGraphicsBeginPDFPage();
            
            //绘制图片
            UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:@"%d.png",i]];
            [image drawInRect:CGRectMake(100, 200, 100, 100)];
        }
        
        //结束pdf的上下文
        UIGraphicsEndPDFContext();
    }

    在沙盒目录下创建imgBook.pdf文件和绘制在imgBook.pdf文件上的笑脸截图为:

       

      一共有9张图片,所以创建了9页pdf,9张笑脸图片分别被绘制在上面。

  • 相关阅读:
    JS中的this
    函数作用域
    全局作用域与变量的声明提前
    立即执行函数与For. . .in语句
    实参可以是任何值
    函数的参数和返回值
    JavaScript创建函数的三种方式
    JavaScript属性名和属性值
    十进制浮点数转换为二进制
    冰雹猜想或角谷定理
  • 原文地址:https://www.cnblogs.com/XYQ-208910/p/4869473.html
Copyright © 2011-2022 走看看