The goal when creating 2D UI is to make graphics that can be repurposed and resized to fit many different circumstances. When creating a button I want it to be easily adapted, to achieve this I often create buttons with several graphics that I layer over each other. All graphics can be created in white and then programmatically recolored. I tend to work in Unity 3D with the plugin 2D Toolkit in which I can easily layer the button graphics and recolor them to my liking.
This is an example of a recent button I created for a preschool educational app.