iOS Development UI Chapter-quartz2d use (draw basic graphics)
A simple explanation
Graphics context: is a cgcontextref type of data
The role of the graphics context: Saving drawing information, drawing state
Decide where to draw the output target (where to draw?) (The output target can be a PDF file, a bitmap, or a display window)
The same set of drawing sequences, specifying different graphics Context, can draw the same image to different targets.
The quartz2d provides several types of graphics Context:
Bitmap Graphics Context
PDF Graphics Context
Window Graphics Context
Layer Graphics Context
Printer Graphics Context
As long as the context is different, the place of drawing is different.
This article shows how to draw a picture onto the bitmap, which requires the creation of a picture that holds the drawing information.
Bitmap is a picture, equivalent to the uiimage of the system. A uiimage is a bitmap.
Second, how to draw the picture to the bitmap?
Note: You cannot get the bitmap context directly in the DrawRect: method, we need to create it ourselves.
code example:
1//2//YYVIEWCONTROLLER.M 3//06-Draw Basic Graphics 4//5//Created by Apple on 14-6-22. 6//Copyright (c) 2014 itcase. All rights reserved. 7//8 9 #import "YYViewController.h" @interface Yyviewcontroller () @property (weak, nonatomic) Iboutlet Uiimagev Iew *iv;13 @end14 @implementation YYViewController16-(void) viewDidLoad18 {[Super viewdidload];20 21//Plus Download Image 22//0. To create a bitmap context//c language method//Cgbitmapcontextcreate (< #void *data#>, < #size_t Width#>, < ; #size_t Height#>, < #size_t Bitspercomponent#>, < #size_t Bytesperrow#>, < #CGColorSpaceRef space# < #CGBitmapInfo bitmapinfo#>)//oc 26//Method 127//Uigraphicsbeginimagecontext (< #CGSize size #>); 28//Method 229 Uigraphicsbeginimagecontextwithoptions (Cgsizemake (31), NO, 0); 30//1. Get Bitmap Context Cgcontextref CTX = Uigraphicsgetcurrentcontext (); 32//2. Draw (Draw a circle) cgcontextaddellipseinrect (CTX, CGRectMake (0, 0, 100, 100)); 34//3. Render Cgcontextstrokepath (CTX); 36//4. Get the generated picture UIImage *IMAGE=UIGRAPHICSGETIMAGEFROMCURRENTIMAGEC Ontext (); 38//5. Displays the resulting picture to imageview39 self.iv.image=image;40//6. Save the drawn picture to the file 41//Convert the picture to binary data before writing the picture to the file 42 UIImageJPEGRepresentation (image, 1); The second parameter is the effect of the saved picture NSData *data=uiimagepngrepresentation (image); [Data writetofile:@]/users/apple/desktop/abc.pn G "atomically:yes];45}46-(void) didReceiveMemoryWarning48 {[Super didreceivememorywarning];50//Dispose O F any resources the can be recreated.51}52 @end
Program execution Effect:
When the program finishes executing, a abc.png picture is created at the specified location
Additional notes:
1. How to create a bitmap graphics context
Method 1 Uigraphicsbeginimagecontext (< #CGSize size#>);
Method 2 Uigraphicsbeginimagecontextwithoptions (cgsize size, BOOL opaque, cgfloat scale)
Using two methods can also be created, but using the first method to create future image clarity and quality is not as good as the second method. Method 2 receives three parameters:
Cgsize Size: Specifies how large the bitmap will be created in the future
BOOL opaque: Set transparent yes to represent transparency, no for opaque
CGFloat scale: Represents scaling, 0 for non-scaling
The created bitmap corresponds to a UIImage object
2.QUARTZ2D Memory Management
objects created with a function that contains "create" or "Copy" must be freed after use, or a memory leak will result
Object obtained with a function that does not contain "Create" or "Copy", you do not need to release
If an object is retain and is no longer in use, you need to release it
You can use the Quartz 2D function to specify retain and release an object. For example, if you create a Cgcolorspace object, use the functions Cgcolorspaceretain and cgcolorspacerelease to retain and release the object.
You can also use the Cfretain and cfrelease of the core Foundation. Note You cannot pass null values to these functions
iOS Development UI Chapter-quartz2d use (draw basic graphics)