# Core Graphics

# Creating a Core Graphics Context

Core Graphics context

A Core Graphics context is a canvas which we can draw in it and set some properties like the line thickness.

# Making a context

To make a context, we use the UIGraphicsBeginImageContextWithOptions() C function. Then, when we are done with drawing, we just call UIGraphicsEndImageContext() to end the context:

# Swift

let size = CGSize(width: 256, height: 256)

UIGraphicsBeginImageContextWithOptions(size, false, 0)

let context = UIGraphicsGetCurrentContext()

// drawing code here

UIGraphicsEndImageContext()

# Objective-C

CGSize size = [CGSize width:256 height:256];

UIGraphicsBeginImageContextWithOptions(size, NO, 0);

CGContext *context = UIGraphicsGetCurrentContext();

// drawing code here

UIGraphicsEndImageContext();

In the code above, we passed 3 parameters to the UIGraphicsBeginImageContextWithOptions() function:

  • A `CGSize` object which stores the whole size of the context (the canvas)
  • A boolean value which if it is true, the context will be opaque
  • An integer value which sets the scale (1 for non-retina, 2 for retina and 3 for retina HD screens). If set to 0, the system automatically handles the scale based on the target device.
  • # Presenting the Drawn Canvas to User

    # Swift

    let image = UIGraphicsGetImageFromCurrentImageContext()
    imageView.image = image //assuming imageView is a valid UIImageView object
    
    

    # Objective-C

    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    imageView.image = image; //assuming imageView is a valid UIImageView object