hmm, the monogame extended implementation is certainly interesting and probably works best for your case @eddeland
On the upside it's integrated with spritebatch, so everything can be batched in one go and you can continue to work with it.
So the implementation is very easy to understand and use.
On the downside it's not as performant as it could be since it uses spritebatch with a texture read per pixel and some rotation math each frame for each segment of a circle for example, BUT it's still very fast in the overall context.
The per-frame cost is also constant, no caching is going on.
Overall I think it's a good implementation, which certainly conforms to the default monogame drawing behavior and therefore I'd say it's a good fit for almost every case.