This is an area that I have not explored before.  That is the creation of plug-ins and community property.  Add to that the fact that the most graphical programming I have done is frame by frame line drawing animation on an Apple II.  In this case I ran into a challenge online that requested an effect that Paint.NET did not offer.

My first adventure started with a version of CodeLab published by BoltBait (sorry I don't have a real name).  It is a tool that launches as an effect within Paint.NET giving you a NotePad style editor for C# with some basic development-time code checking.

There is also a Visual Studio template for VS2005.  It can be found here.  This is how you can overcome the limitations of CodeLab.  The main limitation is the fact that CodeLab gives very few options for dialog boxes.  The best support for the template is a blog post which contains a howto.

Now if you are going to use the template then take advantage of the custom controls within the Paint.NET assemblies.  These reside in PaintDotNet.Core.dll and PaintDotNet.exe.  In my case I chose to use the ColorWheel.

Another key thing to make sure of is that you implement all of the constructors in the token class (token is used for data communication with the dialog).  It seem that the one that takes another copy of the same class is used to pass the token back to the main plug-in class' Render method.

If you want the user to get a real-time view of what they are changing each of your dialog control change events should call the FinishTokenUpdate method.

Of course there is more to developing Paint.NET effect than this, but I will write that when I work out a few more image theory subject with the one I am currently writing.