I just dug up a whole bunch of custom panels that I wrote, complete with a nifty demo application I built way back in 2010 (when WPF was all the rage). It’s pretty fun stuff actually. I posted all the code on GitHub here.
This one is pretty basic, it’s essentially a slightly modified version of Stack Panel. I didn’t implement any properties to customize rendering as I thought it was pretty useless in terms of practical purposes. However, it is a good one to look at if you are curious about how the code works.
I provide a few properties that allow you to customize the rendering.
- Radius: Changes with circle’s radius (in pixels)
- Item Rotate: Degrees to rotate each item
- Allow Item Rotate: turns on / off item rotation
Here is what Item Rotation turned on looks like:
- Start Angle: Changes the offset point of the sine function
- Amplitude: Changes the height of the sine curve
- Frequency: Changes how many curves there are within one length
- Length: Changes how many degrees to include in the length
- Item Rotation: Degrees to rotate an item
- Allow Item Rotation: turns on / off item rotation
Item Rotation creates an almost double helix type affect:
This panel is very similar to the circle panel, in fact, when I wrote it I implemented the Circle Panel first and built from there.
- Radius X: Controls the width of the ellipse
- Radius Y: Controls the height of the ellipse
- Scalar: Controls how quickly items scale down in size
Fermat’s Spiral Panel
With this panel I implemented using Fermat’s Spiral formula.
- Angle: Theta
- Scalar: Radius from the center
You can play around with the angle to change the shape that Fermat’s spiral takes pretty drastically.
I’ve included a few notable values for theta that produced distinctive renderings:
|3 Way Curved||60.67|