I’ve previously covered how to draw circles and rectangles into an image when writing an Apple Watch app. I had an idea for another watch face that needed triangles – these need a different approach using Watch Kit. Basically, you have to draw a path around the perimeter of the triangle (or any other shape), then fill in the shape. Here’s a function to draw a triangle that points to the left:
internal func drawTriangle( _ context : CGContext?, centreX : CGFloat, centreY : CGFloat, size : CGFloat, colour : CGColor )
{
context?.beginPath()
context?.move(to: CGPoint(x: centreX - size/2.0, y: centreY))
context?.addLine(to: CGPoint(x: centreX + size/2.0, y: centreY - size/2.0))
context?.addLine(to: CGPoint(x: centreX + size/2.0, y: centreY + size/2.0))
context?.closePath()
context?.setFillColor(colour)
context?.fillPath()
}
And this is the code for drawing a rectangle:
internal func drawRectangle( _ context : CGContext?, centreX : CGFloat, centreY : CGFloat, width : CGFloat, height : CGFloat, colour : CGColor )
{
let origin = CGPoint( x: centreX - width/2.0, y : centreY - height/2.0 )
let rect = CGRect( origin : origin, size : CGSize(width: width, height: height) )
context?.setFillColor(colour)
context?.fill(rect)
}
Once you can do those primitive triangle/rectangle operations, you can put them together to render any digit you like. So I used them to draw a ‘timeometer’ in this speedo watch face:

The dial is rendered as a series of ticks – at the moment, it shows minutes and hours. I have to admit I still tend to read the time from the digits at the bottom, so I may change the dial to show seconds and minutes instead.