Choosing an Ancestor Class
When creating a new TPF based control you should select an ancestor class that already has as much of the functionality built-in as possible, but that doesn't introduce visual user interface details or behavior that you don't want in the final product. For example, if you need a button complete with the ability to contain images and handle mouse input, you could use RadButtonElement. See the CalendarNavigationElement class for an example that uses higher level element level classes to build an element. If you need lower level control over the behavior and look of your element you can use one of the predefined primitives. See the RadButtonElement class for an example of assembling several primitives. To control the look of your element at the most granular level, create your own primitives by descending from the BasePrimitive class and overriding the PaintPrimitive method.
See the Class Hierarchy Overview topic for a list of classes that can be used as starting points.