iOS開發UI篇—Quartz2D使用(繪製基本圖形)

來源:互聯網
上載者:User

標籤:

iOS開發UI篇—Quartz2D使用(繪製基本圖形)

一、簡單說明

圖形上下文(Graphics Context):是一個CGContextRef類型的資料

圖形內容相關的作用:儲存繪圖資訊、繪圖狀態

決定繪製的輸出目標(繪製到什麼地方去?)(輸出目標可以是PDF檔案、Bitmap或者顯示器的視窗上)

相同的一套繪圖序列,指定不同的Graphics Context,就可將相同的映像繪製到不同的目標上。

Quartz2D提供了以下幾種類型的Graphics Context:

Bitmap Graphics Context

PDF Graphics Context

Window Graphics Context

Layer Graphics Context

Printer Graphics Context

只要上下文不同,繪製的地方就不同。

本文說明如何把圖片繪製到Bitmap上面去,即要求產生一張圖片,圖片上面儲存了繪圖資訊。

Bitmap就是圖片,相當於系統的UIimage。一個UIImage就是一個Bitmap

 

二、怎麼把圖片繪製到Bitmap上?

注意:不能在drawRect:方法中直接擷取Bitmap的上下文,需要我們自己進行建立。

程式碼範例:

 1 // 2 //  YYViewController.m 3 //  06-繪製基本圖形 4 // 5 //  Created by apple on 14-6-22. 6 //  Copyright (c) 2014年 itcase. All rights reserved. 7 // 8  9 #import "YYViewController.h"10 11 @interface YYViewController ()12 @property (weak, nonatomic) IBOutlet UIImageView *iv;13 @end14 15 @implementation YYViewController16 17 - (void)viewDidLoad18 {19     [super viewDidLoad];20 21     //載入圖片22     //0.建立一個Bitmap上下文23     //c語言的方法24 //    CGBitmapContextCreate(<#void *data#>, <#size_t width#>, <#size_t height#>, <#size_t bitsPerComponent#>, <#size_t bytesPerRow#>, <#CGColorSpaceRef space#>, <#CGBitmapInfo bitmapInfo#>)25     //oc中封裝的方法26     //方法127 //    UIGraphicsBeginImageContext(<#CGSize size#>);28     //方法229     UIGraphicsBeginImageContextWithOptions( CGSizeMake(200, 200), NO, 0);30     //1.擷取bitmap上下文31     CGContextRef ctx = UIGraphicsGetCurrentContext();32     //2.繪圖(畫一個圓)33     CGContextAddEllipseInRect(ctx, CGRectMake(0, 0, 100, 100));34     //3.渲染35     CGContextStrokePath(ctx);36     //4.擷取產生的圖片37     UIImage *image=UIGraphicsGetImageFromCurrentImageContext();38     //5.顯示產生的圖片到imageview39     self.iv.image=image;40     //6.儲存繪製好的圖片到檔案中41     //先將圖片轉換為位元據,然後再將圖片寫到檔案中42 //    UIImageJPEGRepresentation(image, 1); //第二個參數為儲存的圖片的效果43     NSData *data=UIImagePNGRepresentation(image);44     [data writeToFile:@"/Users/apple/Desktop/abc.png" atomically:YES];45 }46 47 - (void)didReceiveMemoryWarning48 {49     [super didReceiveMemoryWarning];50     // Dispose of any resources that can be recreated.51 }52 53 @end

程式執行效果:

程式執行完畢後,會在指定的位置建立一個abc.png的圖片

補充說明:

1.建立Bitmap圖形內容相關的方法

  //方法1   UIGraphicsBeginImageContext(<#CGSize size#>);

  //方法2 UIGraphicsBeginImageContextWithOptions(CGSize size, BOOL opaque, CGFloat scale)

使用兩個方法同樣都可以建立,但是使用第一個方法將來建立的圖片清晰度和品質沒有第二種方法的好。方法2接收三個參數:

CGSize size:指定將來建立出來的bitmap的大小

BOOL opaque:設定透明YES代表透明,NO代表不透明

CGFloat scale:代表縮放,0代表不縮放

建立出來的bitmap就對應一個UIImage對象

 

2.Quartz2D的記憶體管理

使用含有“Create”或“Copy”的函數建立的對象,使用完後必須釋放,否則將導致記憶體泄露

使用不含有“Create”或“Copy”的函數擷取的對象,則不需要釋放

如果retain了一個對象,不再使用時,需要將其release掉

可以使用Quartz 2D的函數來指定retain和release一個對象。例如,如果建立了一個CGColorSpace對象,則使用函數CGColorSpaceRetain和CGColorSpaceRelease來retain和release對象。

也可以使用Core Foundation的CFRetain和CFRelease。注意不能傳遞NULL值給這些函數

iOS開發UI篇—Quartz2D使用(繪製基本圖形)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.