Dipping my feet into some more Core Graphics drawing, I’m attempting to recreate a wicked looking metallic knob, and I’ve landed on what is probably a show-stopping issue.
There doesn’t seem to be any way to draw angle gradients in Core Graphics. I see there’s CGContextDrawRadialGradient() and CGContextDrawLinearGradient(), but there’s nothing that I see that would allow me to draw an angle gradient. Does anyone know of a workaround, or a bit of framework hidden away somewhere to accomplish this without pre-rendering the knob into an image file?
AngleGradientKnob http://dl.dropbox.com/u/3009808/AngleGradient.png.
This is kind of thrown together, but it’s the approach I’d probably take. This is creating an angle gradient by drawing it directly into a bitmap using some simple trig, then clipping it to a circle. I create a grid of memory using a grayscale colorspace, calculate the angle from a given point to the center, and then color that based on a periodic function, running between 0 to 255. You could of course expand this to do RGBA color as well.
Of course you’d cache this and play with the math to get the colors you want. This currently runs all the way from black to white, which doesn’t look as good as you’d like.