What’s next for Paint.NET in 2019?

It’s been a little over 9 months since I left Facebook, and since then I’ve been hard at work on Paint.NET. (There were two primary reasons for me leaving Facebook: 1) it was way too exhausting, which is also part of the reason I haven’t been blogging much for several years, and 2) I really just wanted to focus on Paint.NET for awhile.)

2018

Looking back on 2018, a lot was accomplished! In the 4.0.20 update back in January I shipped a dark theme, which I originally didn’t see the point of but now I can’t imagine the app without it. After that there was mostly radio silence until I released 4.1 in September. That update had quite a lot of infrastructure changes in it, both in the low-level bowels of my COM interop system (long story…), and in the addition of GPU-powered effects (which was powered using Direct2D, which was dependent on the aforementioned COM stuff). Since then, the 4.1.1 through 4.1.5 updates have focused on fixing a bunch of bugs that have popped up (which has been frustrating), and improving performance (notably for effect loading at startup, and canvas rendering when zoomed out).

2019

What’s next though? Well, I’ll start by quoting a recent article over at HostingAdvice that I did a small interview for:

After 10 years of working at Microsoft and several years at Facebook, Rick decided to focus exclusively on Paint.NET this year. “That means I’ve gone from having 20% of my time available to about 80%,” he said.

“I’m going to be spending a lot of time preparing infrastructure for the next big wave of features going into Paint.NET.”

To that end, Rick hopes to enhance the user interface with more attractive icons, allow users to install custom brushes, and introduce pen and pressure sensitivity for tablets.

With that, let’s start talking directly about what I’m planning and hoping to release in 2019:

App Icons and High-DPI

Paint.NET’s UI is quite functional for high DPI systems without any of the layout problems or truncated text elements that have plagued Windows apps since, well, forever. However, that’s no longer good enough in 2019. For starters, the app icons are all authored for 96 DPI (aka “100% scaling”), and look blurry at higher DPI settings. Upgrading all of that is a project I’ve just started working on, and is what the aforementioned article refers to as “more attractive icons.”

Beyond that, newer versions of Windows support dynamic scaling (changing the scaling without logging out and then in again), and per-monitor DPI. Right now if you change the system DPI while Paint.NET is open, it won’t look very good. Similarly if you move the app over to a monitor with a different DPI setting. This also affects use of Remote Desktop where the remote system’s DPI is different, and use of laptop docking stations when the external monitor’s DPI is different. These all make using Paint.NET in modern scenarios rather clumsy and frustrating. For instance: when I use my laptop with a 4K screen to remote into my desktop with a 2K screen, it sucks that I have to restart Paint.NET so it doesn’t look blurry.

Windows gets a bad rep for having bad high-DPI scaling, and part of the responsibility for fixing that reputation lies with application developers like me. Refreshing the app icons is the next thing I’ll be working on, and then I’ll upgrade the infrastructure for dynamic DPI (probably over the course of several updates). Thankfully these projects seem to be the “final frontier” for High DPI: once they’re done we can finally bury the hatchet on High DPI bugs.

.NET Core 3.0

Richard Lander’s post earlier in the year about .NET Core 3.0 shipping with WinForms and WPF really made my day. The more recent announcement that both WinForms and WPF would be open sourced has fulfilled a long-time dream of mine. I can’t wait to fork the ToolStrip classes and migrate them off of GDI+ 🙂 (this should be a good performance win)

It’s clear that, in the long-term, Paint.NET needs to migrate over to .NET Core. That’s where all of the improvements and bug fixes are being made, and it’s obvious that the .NET Framework is now in maintenance mode. On the engineering side this is mostly a packaging and deployment puzzle of balancing download size amongst several other variables. My initial estimations shows that the download size for Paint.NET could balloon from ~7.5MB (today) to north of 40MB if .NET Core is packaged “locally”. That’s a big sticker shock … but it may just be necessary.

And, for those who’re interested: the move to .NET Core will finally enable a truly portable version of Paint.NET since .NET Core can just be bundled into the local app directory. I’ve been slowly moving towards “app local deployment” of dependencies anyway; e.g. for the v4.1 release I got fed up with the Visual C++ runtime’s installation issues and moved them to be “app local”. The security arguments no longer convince me that it’s worth the massive hassles for both myself and end-users. The straw that broke the camel’s back (so to speak) on this was when the Surface Go shipped with an incorrectly signed version of the Visual C++ runtimes which then prevented Paint.NET from loading at all (remember: the Surface Go runs Windows 10 “S” by default and can only run Store apps).

Improved DDS support

The DDS support in Paint.NET works well, but hasn’t been updated to the newer DDS formats that have become more popular. Nicholas Hayes, aka “null54” on the forum, has written a plugin that provides better DDS support (forum link, and github link). This is a no-brainer for integration into Paint.NET so that everyone can benefit from these improvements (and without having to rename files to have a .dds2 extension, yuck!). Paint.NET is used a lot in the gaming biz, so this should help out a large audience of developers in this arena.

Brushes and Pressure Sensitivity

This is the big one. I’ve been wanting to get to this for years, and it’s finally time to get it done. The first thing to happen is that Paint.NET needs an improved selection of built-in brush stamps (currently only “circle” is implemented). Second, custom brushes need to be supported without the use of a plugin. This will bring brushes up to the same level that Shapes is now at. Third, pen and pressure sensitivity is desperately needed and long overdue. I’ll be posting more details when this project starts taking shape, and I’m hoping to start on it this summer.

(Keep in mind, however, that pressure sensitivity will require at least Windows 8 or maybe 10: the APIs for this do not exist on Windows 7.)

Expanded Plugin System(s)

I really wanted to ship 4.1.2 with GPU support for effect plugins. However, a high-priority security vulnerability forced me to shelve that at the last minute. Now that I’ve had more time to think about this, I’d like to revamp the effect plugin system further — it hasn’t seen much love in the last decade. Providing access to GPU acceleration and Direct2D is an obvious next step, but I also have an opportunity to clean things up in this area. Effects can’t easily combine (or compose) with other effects, and this makes it really hard to do arbitrarily complex things with them. It’s also difficult to add new functionality to the effect system without accidentally breaking other parts of it.

In addition, it’s been way overdue for Paint.NET to support more plugin types beyond effects and file types. Plugins should be able to access more than the current layer, and even be able to implement whole-image transforms, or to create a new image (whether from scratch or based on another image that’s already open). You can’t even write a rescaling plugin for Paint.NET right now! I don’t have concrete plans for specifically what I’ll be adding here, or when, but it’s high up on the priority list. And in the long term, I would still like to add support for tool plugins (something of a holy grail).

Until next time …

This roadmap for 2019 is ambitious, but I think I should finally have enough time to actually realize most of it. Hopefully I’ll be able to blog more in the coming year now that I’ve got more time and energy for it.

Paint.NET is only going to get better as time goes on, and I’d really like to thank everyone for all of their support in making this transition to full-time self-employment possible for me. Thanks for the donations, thanks for buying the Windows Store app, thanks for the crash reports, thanks for the feature requests, and thanks for all of the fish!

Advertisements

42 thoughts on “What’s next for Paint.NET in 2019?

  1. Tuulikk says:

    Looks like 2019 might be a really good year for Paint.Net. Lack of pen pressure is one reason I don’t use the app more in editing. One other reason is that the color panel takes up to much space, would be nice to be able to collapse it into only color swatches. Then Paint.Net might become my main editing app and a drawing app for me.

    Does Paint.Net have a grid and a free transform tool? My memory says no, but unsure. Other things I can dream of is perspective drawing and vector tools.

    Thanks for all your hard work over the years. I have bought the app on Windows Store a while back and will support you with a minor donation in the future.

    Now back to sleep.

    • Rick Brewster says:

      There is a pixel grid, which you can see in the View menu (and on the toolbar).

      As for free transform, have you used the Move Selected Pixels tool? It’s at the top-right of the Tools box…

      • Tuulikk says:

        I see the pixel grid that needs zoom. I would like a grid that I can change the size of the grid and snap lines to as I draw them.

        Move pixels misses the “free” part of transformations as far as I see. I can’t deform the selection at the corner points.

        Thanks for your answer

      • Tuulikk says:

        Not shift click anything, my Wacom tablet can no longer map that to a pen button. A keyboard key combination or a mouse click up to 5th button is probably all I can map to a pen button. Maybe all keyboard + mouse combination have stopped working for my tablet.

  2. stephencwll says:

    Existing times. Thanks for your hard work over the years.

    My only request is for a custom toolbar please where i can store my favourite tools and actions, much like in Microsoft Office products. That would be highly useful

      • John Moser says:

        It uses a freeware license that used MIT as a template, modified it, and prohibited doing exactly that to the software.

        Paint.NET is inappropriate for inclusion on ChromeOS images and in Linux distributions, or for use as a basis to make a larger and more-integrated software—such as a basis for e.g. Krita in C#.NET.

        What I’m expecting to change is a Github repository and libre licensing that doesn’t get people into a legal trap for distributing or modifying it. There are too many useful things that people close off from the world for no reason.

        • Rick Brewster says:

          “for no reason” … Actually I have pretty good reasons for this. Please don’t assume “for no reason” if you don’t know the reasons, or if you disagree with the reasons. There absolutely are reasons!

          But, Paint.NET isn’t targeted at what you’re describing. It’s not compatible with Linux, for one, and .NET Core won’t change that. It’ll be up to WINE to flesh out the incomplete portions of their Win32 support in order for Paint.NET to work on Linux. (Last I checked, the next hurdle was some incomplete Direct2D support.) Paint.NET is also not something I want to be chopped up and swept into other projects like Krita. Remember, I make my living off of this — why would I just give away my IP like that? (although, of course, the whole conversation space here is much more complex — please don’t assume I’m anti-OSS or something)

            • stephencwll says:

              There’s a charge for the app via Microsoft Store and a donations button in the software itself, which one should feel a little guilt about not contributing towards if they are a big user of the software. I’m unsure if I’ve ever contributed. I don’t know how I’d check? The developer absolutely deserves the opportunity to make a living.

  3. Ed says:

    The move to .NET Core will finally enable a truly portable version of Paint.NET

    Can you confirm if this means a Linux version? Paint.NET is an amazing piece of software.

    • Rick Brewster says:

      Sorry, no. WinForms and WPF are still Windows only in .NET Core 3. I’d like for Paint.NET to be able to run on Linux through WINE, but the last I checked they still had major gaps in their Direct2D support.

  4. Tuulikk says:

    I just thought of something. I think the best way to get people to contribute with money and do it more than once is to give them something they don’t get for free. Biggest reason for me has been auto update in Windows Store. Other things could be a extra theme, a add-on, exclusive test version, exclusive splash screen, handbook, a thank you drawing, get to vote about features and so many other ways and things. Free does not have to be mean not getting paid or only getting paid once.

  5. Writer and author says:

    Hey Rick, thanks for your fabulous image editor. I’ve been using it for years – on three continents. I’m now writing a series of tutorials for it because while there are good videos, I’ve never really seen something that writers (like me) can easily assimilate. Of course, right up front, I’m encouraging DONATIONS.

  6. scary monster says:

    It’s good that you keep improving this program, but it will be nice if you could focus on adding more functionality, like editable text, some more layer styles like on ps, stroke, drop shadow, color overlay. Holding Alt to color pick is pretty handy as well. Also the “Snap” thing that aligns things when you move them would be good. Oh and a “center” layers contents, button would be very good.
    I know adding things like this is not easy, and takes a lot of time, but i’ll be glad if you can add just 1 of them in 2019.

  7. Fleet Command says:

    I see you have a lot of bold plans for 2019. Perhaps you can start by changing the theme on your blog, making its font a bit bigger and its text area a bit wider. (Thankfully, Firefox has a reading mode.)

    • Rick Brewster says:

      I can’t even remember when I chose the theme. It may have even been pre-Obama. Try it now though …

      Also if you need the font to be bigger, you can use Ctrl + and Ctrl – to tell your web browser to make things bigger/smaller. Works on all sites.

      • Fleet Command says:

        Well, your new theme is great.

        And your Ctrl + and Ctrl – suggestion is definitely pre-Obama. Nowdays, people just go into reading mode! 😉 And iPad does not have a Ctrl key.

  8. Hadi says:

    Hi Rick.Thanks for all the work you’ve put into this project. I’ve been using paint.net for close to 10 years now. I have a request that I feel wouldn’t be too difficult to incorporate but would have a dramatic impact on usability. Could we get filtering search boxes for both fonts and effects? Especially effects. Sometimes it is a real pain trying to figure out which sub-menu an effect is in – a text search would be magical.

    Thanks again and looking forward to everything that is coming in 2019!

    • Rick Brewster says:

      Is it in the list above? If not, then I’m not planning it for 2019. Simple as that. That doesn’t mean it’s never coming. There’s only so much I can do with finite time and energy.

  9. carl says:

    I can’t wait for pressure sensitivity! that would really set this up to replace other apps and let it be a one stop shop for me.

    • Rick Brewster says:

      No I updated the theme for the first time in 10 years (see people commenting on it above). I haven’t yet uploaded a banner image to the top.

  10. Shane says:

    Above all I would love to say Thank You! I love Paint.net and have used it for years; in many instances I prefer it over Photoshop for the majority of my work. The only thing that has ever bothered me about Paint.net is how text and shapes are rasterized to the layer they were created on as soon as you are finished editing them. I would absolutely love to see text, shapes, and lines get overhauled in such a way that would put those objects in their own “un-rasterized” layer giving the user the ability to go back and edit/manipulate the text, shape, or line’s points later if needed. I’ve always struggled with needing to make modifications to objects after I’ve already finished with my initial creation of these objects. Adding this would be a true Godsend! Even if this doesn’t get implemented, I appreciate all the work that has gone into Paint.net over the years! Thanks again.

  11. Алексей Долматов says:

    Plans are really great. I hope that there will be enough time and effort for the long-term support of the program.
    Although the photoshop mashstaby or Corel draw is not holy to her, but I often use it as a substitute for the usual and 3d point.
    Not sure about photo processing, but you may need a poll on the forum about expanding the import function from cameras and scanners. The current version seems to me a bit primitive.

Comments are closed.