How Did Pinta Start?
Over the holidays, I was reading an article on OSNews stating how something like Paint.NET was needed for the Linux desktop. I had previously done some work on porting Paint.NET to Mono's winforms, but obviously a native Gtk version would be needed to fit in on Linux.
I've been meaning to play with Gtk and Cairo for several years, so I sat down for a few hours and wrote a basic paintbrush on a canvas. Within a few days, I had accomplished far more than I ever expected to, so I continued on. After a month, I was ready to unleash my rough creation to the world.
Is Pinta a Port of Paint.NET?
Not really, it's more of a clone. The interface is largely based off of Paint.NET, but most of the code is original. The only code directly used by Pinta is for the adjustments and effects, which is basically a straight copy from Paint.NET 3.0.
Regardless, we are very grateful that Paint.NET 3.36 was open sourced under the MIT license so we could use some of their awesome code. (If you need to get the Paint.NET 3.36 source code, you can get it from the here.)
Can I Run Pinta on Windows?
Yep!
To run on .Net, you will need to install Gtk# for Windows, then you can run the provided .msi to install Pinta.
Can I Run Pinta on Mac?
Yep!
Download and install Mono for Mac, then you can install the Mac bundle.
Pinta Memory Usage Keeps Growing
This is caused by keeping around infinite levels of Undo.
Basically, we keep an entire Cairo ImageSurface for each operation. To see the memory get freed, you can Undo all the way back to your starting canvas, and then perform any action. It will dispose all of your history, which frees the memory.
Of course, deleting all your history to free memory isn't very useful. In future versions, this will be mitigated in several ways:
- Storing less information (only the region that changed) per history step.
- Storing older history steps to disk instead of keeping them in memory.
- Allowing the user to customize how many history steps to keep in memory and on disk.





