You are currently browsing the category archive for the ‘Update News’ category.

There were a few bugs that got introduced in 4.0.4, so here’s an update that fixes them. Chiefly among these bugs are a break in how the Magic Wand tool works, a crash when using Effects, and one when trying to use the Shapes tool.

As usual, you can download it directly from the website, or you can use the built-in updater via Settings –> Updates –> Check Now.

  • Fixed: Subtraction mode in the Magic Wand tool was generating B-A instead of A-B.
  • Fixed: Crash when using Effect –> Repeat.
  • Fixed: Crash (AccessViolationException) on some systems when initializing the canvas for hardware accelerated rendering. It will still crash but then switch to software rendering for the next startup, which will then avoid the crashing.
  • Fixed: Crash when clicking on the Shapes tool if you had run an old 4.0 beta/alpha and had also changed which shape is used at startup to be a line or curve.
  • Fixed: Crash when using Settings –> Update –> Check Now due to incorrectly determining that UAC is not enabled.

Enjoy!

As I discussed in an earlier blog post, this update greatly improves performance in some key areas like the Magic Wand and Move Selected Pixels tools. It also fixes some important bugs, and even gives back a feature that got lost in the move from 3.5 to 4.0. Good stuff all around!

As usual, you can download it directly from the website, or you can use the built-in updater via Settings –> Updates –> Check Now.

Here’s the change log:

  • New: Added a ‘Fill’ property to the Paintbrush tool (regression from 3.5).
  • Faster: Move Selected Pixels has been significantly optimized.
  • Faster: Magic Wand Tool has been significantly optimized.
  • Faster: Working with aliased selections ("aliased selection quality" in the toolbar) has been significantly optimized.
  • Faster: Edit->Copy and Edit->Copy Merged are now up to 2x faster.
  • Faster: Drawing when a selection is active; clipping performance is now improved.
  • Fixed: The Text tool no longer produces terrible looking text when using Smooth rendering mode without antialiasing.
  • Fixed: The Gear shape had a few glitches.
  • Fixed: Using a Fill pattern with the Paint Bucket would sometimes produces misaligned or "corrupt looking" results.
  • Fixed: The alignment of the menu buttons in the top-right was off by 2 pixels, causing them to look weird at high-DPI.
  • Fixed: The zoom buttons in the status bar would not recognize clicks unless the main window was already in focus.
  • Fixed: Some incorrect errors about requiring Windows 7 SP1 when launching the installer from something like an old version of WinZip.
  • Fixed: Edit->Clear Selection and Edit->Cut were filling with transparent black (#00000000) instead of transparent white (#00FFFFFF). This caused some discrepancies compared to older versions of Paint.NET (regression from 3.5).
  • Fixed: Pressing Ctrl+A when a drawing tool was active would sometimes incorrectly show a tinted selection.
  • Fixed: Text in the title bar was not visible when using a 3rd party Aero theme with black titlebars.

Enjoy!

I talked about 4.0.4 in a recent blog post, and now I’ve got a beta that you can try out. Head on over to the forum to check out the list of changes and, of course, to download it: http://forums.getpaint.net/index.php?/topic/30337-paintnet-404-beta-build-5442/

In order to save a bunch of time, which I’m short on for the next few weeks, I’m not releasing this via the built-in updater or the website. Later this week I can hopefully fast-track a non-beta update for everyone to enjoy.

Whew, it’s been awhile since there was an update to paint.net 4.0. It’s finally time to start talking about the next one!

I’ve been slowly chipping away at various little things in Paint.NET, especially with respect to performance. And also some missing features and bug fixes.

Here’s a preview of what’s coming in 4.0.4:

  • The ability to choose a “Fill” is coming back for the Paintbrush tool. I didn’t think many people would miss it and so I left it out of 4.0 in order to save time for other things. I was wrong on two fronts here: 1) people do need it, and 2) it only took a few minutes to implement. So, in 4.0.4, it’ll be back.
  • Dramatically faster Magic Wand tool. I came up with a new algorithm to do the reverse scan-conversion that is needed here. On small images you probably won’t notice, but if you’ve ever had the Magic Wand tool “take forever” then the next update is going to be your favorite one of all time. I’ve seen the Magic Wand go from taking 60+ seconds in 4.0.3 to taking maybe 2 or 3 seconds in 4.0.4.
  • The improvements to the Magic Wand tool’s reverse scan-conversion algorithm have also been applied to make aliased selections work a lot faster. (Actually I’ll tell the proper truth here: This work was originally intended as a challenge to myself to see if I could make the aliased selection rendering run a lot faster. It just so happened to be more relevant for the Magic Wand Smile)
  • Much faster performance overall. I’ve chipped away at performance in the areas of antialiased selections, selection clipping, and so on. Anything involving selections should be a lot faster. In particular, the Move Selected Pixels tool has a fantastically smoother framerate. Some of this optimization just involved a better choice of sorting algorithm (e.g. by using introspective sort instead of raw quicksort). I have also aggressively applied a coding pattern in C# which allows elision of virtual function calls (via inlining) by combining generics, structs, and interfaces. If anyone is interested in hearing the details, please let me know in the comments below, as I’m not sure this has been discussed much in the broader C#/.NET community. This pattern is responsible for the first 20% performance gain in my C# implementations of quicksort and introspective sort, so it’s nothing to sneeze at Smile Other performance improvements came about by being smarter about how selection mask generation was parallelized with other computations, by replacing integer divisions with multiply/add/shift combinations, and so on. Windows Performance Analyzer is your friend, folks! I’ve been using it extensively to optimize paint.net 4.0 (both now and in the past).
  • Other miscellaneous bug fixes, of course. The Gear shape had some glitches (oops), the Text tool produced foul output if you used its Smooth rendering mode while antialiasing was disabled, and Edit –> Clear wasn’t behaving the same as it was in v3.5 and was causing problems because of it.

“Reverse scan-conversion” is the inverse of polygon scan conversion (also known as rasterization). It’s the process of taking a list of non-overlapping rectangles with integer coordinates and extents (e.g. System.Windows.Int32Rect) and stitching them together to form a polygon (a list of points in 2D space). In Paint.NET this is used when you have chosen to use aliased selections: your selection’s polygonal outline is scan-converted (rasterized) to produce a list of integer rectangles which approximate its interior (this is a well-known algorithm in computer graphics). This list of rectangles (or “scans”) is then fed into the next algorithm which stitches the rectangles together to create a “pixelated” (or rectilinear) polygon outline. In 4.0.3 and before, each rectangle was first transformed into a closed polygon and then they were all run through GPC’s union algorithm. This ensured that any touching edges were coalesced. Unfortunately, GPC just does not like this scenario and performs excruciatingly slow, and sometimes even crashes via stack overflow.

As it turns out, this has a lot of overlap with what the Magic Wand tool does. It too needs to take a list of rectangles and transform it into a polygon, although the source is different. We start by applying ye ol’ flood fill algorithm, with tolerance thresholding, to the image in order to create a bitmask that tells us which pixels are included or not. This bitmask is then converted into a list of rectangles via a process akin to RLE compression. And then that list of rectangles must be converted into a polygon because that’s the way Paint.NET’s selection system works (it is geometry based: it needs polygons!). This is what takes up about 99% of the CPU time when you see the Magic Wand “taking forever,” and by reducing it from O(n^m) down to O(n), much time and frustration is saved. (I’m doing a little hand-waving here by not specifying what ‘n’ is. Also, I haven’t actually analyzed GPC’s code to figure out what m is, although it’s probably 2. Have you tried analyzing its code? It’s intense Smile)

Almost all of the CPU time is now spent drawing the selection outline with Direct2D. A future update might optimize that too since Direct2D is using a general purpose algorithm, something which is overkill when all I need is to apply a 1 pixel stroke to a polygon.

This update fixes a few small bugs and improves performance. There are still some performance issues when working with lots of layers, particularly when using Layers –> Import From File, but I plan on fixing those in the near future as well. Optimization work is never complete, and is quite fun and rewarding Smile !

As usual, you can download it directly from the website, or you can use the built-in updater via Settings –> Updates –> Check Now.

Changes since 4.0.2:

  • Further improved performance when working with images that have a lot of layers.
  • Fixed some flickering in the Layers form.
  • Fixed the Language selector in the Settings dialog.
  • Fixed 2-finger touchpad and touch screen scrolling.
  • Aero peek thumbnails now include the pixel grid if it’s enabled.
  • Fixed a crash in the thumbnail renderer that sometimes happened when switching between images.
  • Ctrl+W no longer exits the application if zero images are open.

Enjoy!

This update is focused on fixing a few key regressions in functionality from 3.5, as well as fixing some other small (but important!) bugs.

As usual, you can download it directly from the website, or you can use the built-in updater via Settings –> Updates –> Check Now.

Changes since 4.0.1:

  • Fixed the gamma and contrast for text rendering on some systems where the wrong values were being used ("rainbow" text)
  • Colors window now correctly lets you paste a hex color value that starts with a hash, e.g. #112233
  • Gradient tool now lets you reverse a transparency gradient by clicking the right mouse button on one of the handles (regression from 3.5)
  • Move Selected Pixels now lets you hold Control to leave a copy of the selected area behind on the initial move (regression from 3.5)
  • Paint Bucket tool’s hatch fill modes weren’t working with the Overwrite blending mode (regression from 3.5)
  • Fixed a keyboard tabbing issue in the Resize dialog (regression from 3.5)
  • Fixed the language setting in the Settings dialog not always allowing you to set it to English if your system’s default language is non-English
  • Fixed a performance issue that caused images with many layers (50+) to take a VERY long time to open, close, or even switch away from (regression from 3.5)
  • Fixed a rare crash at application exit
  • Fixed an issue that prevented 4.0.1 from installing on top of 4.0 when using the MSI (e.g. AD/GPO network deployment)
  • Fixed an issue that would sometimes cause the installer to take 30+ seconds to appear

Enjoy!

This update is focused on fixing some important crashes, bricks, and functionality issues, and also on a few key performance optimizations.

As usual, you can download it directly from the website, or you can use the built-in updater via Settings –> Updates –> Check Now.

Changes since 4.0:

  • Move Selected Pixels tool performance has been significantly optimized.
  • Move Selected Pixels tool was always leaving transparent black behind instead of the secondary color with alpha removed.
  • Brush tools with odd-sized brushes and no antialiasing were drawing at 1 size smaller.
  • Fixed some apparent ‘lag’ in the brush tools due to an off-by-1 glitch in the stroke path calculation code.
  • The brush tool preview circle no longer scales by the system DPI setting, which made it too big.
  • Removed the momentary hourglass/wait cursor after drawing (e.g. pencil and brush tools).
  • Optimized performance of the Shapes tool, especially for the Ellipse shape.
  • Paint Bucket tool will now correctly treat the selection as a boundary contour.
  • Zoom tool no longer crashes sometimes when pressing the right mouse button while already holding the left mouse button.
  • The status bar now reports the correct selection location when it’s outside the image boundaries (e.g. negative values).
  • Auto-scrolling on the edge of the window now works correctly and doesn’t require you to "jiggle the mouse" for each scroll update.
  • Touch screens no longer scroll when swiping up/down with one finger.
  • Improved the pixel grid’s contrast so it’s not overwhelmingly bright.
  • The transparency "checkerboard" is now aligned to the top-left of the image, instead of the top-left of the canvas.
  • The cursor position reported in the status bar was off-by-1 when the value was supposed to be negative.
  • Some controls (e.g. units selection in the Image->Resize dialog) were not drawing focus rectangles when using the keyboard.
  • Fixed a crash (OutOfMemoryException) when using a selection tool when hardware acceleration is disabled.
  • Fixed a crash (TimeBeforeLastUpdateException) in the installer. This usually happens when running in a virtual machine, and only affects animations.
  • Fixed a crash (BadImageFormatException) at startup. This indicates an installation error, and will be automatically repaired.
  • Fixed various crashes caused by having the wrong (old) version of PaintDotNet.SystemLayer.Native.dll. This indicates an installation error, and will be automatically repaired.
  • Improved performance when software rendering is used (e.g. when hardware accelerated rendering is disabled).
  • All 7th generation Intel GPUs now default to hardware rendering. All older Intel GPUs default to software rendering.
  • Fixed graphical artifacts (blackness, flickering, mouse trails) on certain GPUs (e.g. NVIDIA Optimus).
  • NVIDIA ION graphics cards now default to software rendering due to crashes.
  • Fixed an issue that was causing beta updates to be offered even if “Also check for pre-release (beta) versions of paint.net” was disabled in Settings

Enjoy!

This update is focused on fixing some important crashes, bricks, functionality issues, and performance optimizations.

You can get it via the built-in updater in 4.0 if you have "Also check for pre-release (beta) versions of paint.net" enabled in Settings -> Updates.

You will need to download this directly from the website in order to install it: http://www.getpaint.net/updates/zip/paint.net.4.1.5305.37852.install.zip . As it turns out, there’s a teeny tiny bug in 4.0 Final which causes it to basically just ignore your setting for "Also check for pre-release (beta) versions." Oops :)

Changes since 4.0:

  • Move Selected Pixels tool performance has been significantly optimized.
  • Move Selected Pixels tool was always leaving transparent black behind instead of the secondary color with alpha removed.
  • Brush tools with odd-sized brushes and no antialiasing were drawing at 1 size smaller.
  • Fixed some apparent ‘lag’ in the brush tools due to an off-by-1 glitch in the stroke path calculation code.
  • The brush tool preview circle no longer scales by the system DPI setting, which made it too big.
  • Removed the momentary hourglass/wait cursor after drawing (e.g. pencil and brush tools).
  • Optimized performance of the Shapes tool, especially for the Ellipse shape.
  • Paint Bucket tool will now correctly treat the selection as a boundary contour.
  • Zoom tool no longer crashes sometimes when pressing the right mouse button while already holding the left mouse button.
  • The status bar now reports the correct selection location when it’s outside the image boundaries (e.g. negative values).
  • Auto-scrolling on the edge of the window now works correctly and doesn’t require you to "jiggle the mouse" for each scroll update.
  • Touch screens no longer scroll when swiping up/down with one finger.
  • Improved the pixel grid’s contrast so it’s not overwhelmingly bright.
  • The transparency "checkerboard" is now aligned to the top-left of the image, instead of the top-left of the canvas.
  • The cursor position reported in the status bar was off-by-1 when the value was supposed to be negative.
  • Some controls (e.g. units selection in the Image->Resize dialog) were not drawing focus rectangles when using the keyboard.
  • Fixed a crash (OutOfMemoryException) when using a selection tool when hardware acceleration is disabled.
  • Fixed a crash (TimeBeforeLastUpdateException) in the installer. This usually happens when running in a virtual machine, and only affects animations.
  • Fixed a crash (BadImageFormatException) at startup. This indicates an installation error, and will be automatically repaired.
  • Fixed various crashes caused by having the wrong (old) version of PaintDotNet.SystemLayer.Native.dll. This indicates an installation error, and will be automatically repaired.
  • Improved performance when hardware acceleration is disabled.
  • All 7th generation Intel GPUs now default to hardware rendering. All older Intel GPUs default to software rendering.
  • Fixed graphical artifacts (blackness, flickering, mouse trails) on certain GPUs (e.g. NVIDIA Optimus).
  • "NVIDIA ION" graphics cards now default to software rendering due to crashes.

Enjoy!

Thanks to everyone who helped out with the extensive alpha and beta releases with all the bug reports, crash log submissions, and general feedback. It has all been a tremendous help in creating the best paint.net release ever! It’s been a long time coming, but I think it’s worth it.

There are a few ways to get the new version:

  1. The preferred way: If you’re using Paint.NET v3.5.x, go to the Utilities menu and click on “Check for Updates.” If you’re using a pre-release version of 4.0 (beta or release candidate), go to the Settings dialog, then to the Updates section, and then click “Check Now.”
  2. You can also download it directly from the website, http://www.getpaint.net/ . There is no need to uninstall the old version: that will be taken care of automatically.

Without further ado, here is the final list of changes, features, improvements, and fixes:

  • System Requirements
    • Windows 7 SP1 or newer is now required.
    • .NET Framework 4.5 is now required, and will be installed if needed.
    • A dual-core (or more!) processor is highly recommended.
    • Hardware acceleration (GPU) via Direct2D is now supported.
      • Please disable this in the Settings dialog if you experience visual artifacts.
  • Performance
    • A brand new, asynchronous, fully multithreaded rendering engine allows performance to scale very well with respect to the number of CPU cores whether you have 2, 4, 6, or even 16 of them.
    • The responsiveness of the user interface has been greatly improved, especially when working with large images.
    • Memory usage is lower.
    • Improved battery life impact due to fixing the way the floating windows manage their transparency.
    • Startup performance when many plugins are installed is improved, thanks to the Multicore JIT feature introduced in .NET 4.5.
  • Selections
    • Selections are now antialiased, which greatly improves the quality around the edges of selected content. You can turn this on and off at any time from the toolbar.
    • Everything related to selections now has much higher performance and greatly reduced CPU usage, especially if hardware acceleration (GPU) is enabled.
    • The selection outline is now rendered using the “dancing ants” animation, which greatly improves the contrast between it and the image itself.
  • General
    • The functionality previously provided by the Utilities, Window, and Help menus has been simplified, consolidated, and moved to the top-right corner of the main window.
    • The image thumbnail list has been moved up 1 row so that it no longer intrudes into the current Tool’s toolbar space. This means it will no longer “jump around” when you switch between tools. This also means that it is aligned to the top of the monitor when the main window is maximized, making it easier to click on images (Fitt’s law).
    • The image thumbnail list can now be reordered with drag-and-drop.
    • A brand new Settings dialog makes it much easier to configure all the tool and toolbar defaults, among other things.
    • The zoom slider and units selector have been moved from the toolbar to the bottom right corner of the window (into the status bar).
    • Each image now shows up as its own taskbar item. This can be disabled in the Settings dialog with “Show image previews in the Windows taskbar.”
    • Layers can now be reordered with drag-and-drop.
    • Ctrl+Click on the Move Layer Up/Down buttons will now move a layer to the top/bottom, respectively.
    • Improved quality of Image->Resize.
    • Edit –> Copy Merged will copy all layers to the clipboard without having to use Image->Flatten first.
    • Copying to the clipboard now includes the “PNG” format, which allows transparency to survive from many popular applications (e.g. Office)
    • You can now use the middle mouse button to scroll/pan the image at any time (same functionality as holding down the spacebar along with clicking and dragging the mouse).
    • Shift+Backspace will now fill the selection with the secondary color (Backspace, the shortcut key for Edit -> Fill Selection, still fills with primary color as usual).
    • paint.net now shows up in Windows’ “Default Programs” control panel so you can configure its file type associations without reinstalling.
    • EXIF rotation metadata is now applied when opening images (e.g. JPG taken with a rotated camera).
    • Eleven (11) new languages, bringing the total to 21: Chinese (Simplified), Chinese (Traditional), Czech, Danish, Dutch, English, Finnish, French, German, Hindi, Hungarian, Italian, Japanese, Korean, Lithuanian, Persian, Polish, Portuguese (Brazilian), Portuguese (Portugal), Russian, and Spanish.
    • Crash logs are now stored in %LOCALAPPDATA%\paint.net\CrashLogs (e.g. C:\Users\username\AppData\Local\paint.net\CrashLogs) instead of on the desktop.
  • Effects
    • New effect: Photo -> Vignette.
    • Improved the quality of the Photo -> Red Eye Removal effect.
    • Improved UI for Layers -> Rotate/Zoom.
    • Effect plugins now show up with a jigsaw puzzle icon next to them in the menus. You can hover over the effect to see information about it, including the author and location of its DLL.
    • Errors while loading effect plugins are now displayed in the Settings dialog.
  • Tools
    • Most Tools now support “fine-grained history.” You may adjust the properties of what you’ve drawn (e.g. colors, toolbar settings) before committing to the layer (use the “Finish” button or press Enter), and each change is tracked in the history.
    • Tools may now draw directly with a blending mode, configurable from the toolbar. All of the layer blending modes are supported, as well as “Overwrite.”
    • Drawing tools (Pencil, Paintbrush, Eraser, Clone Stamp, Recolor) now have much smoother mouse input handling via GetMouseMovePointsEx.
    • Brush tools (Paintbrush, Eraser, Clone Stamp, Recolor) now have soft brushes support via a “Hardness” setting in the toolbar.
    • The Move tools (Move Selected Pixels, Move Selection) have a much better UI for scaling, moving, and (especially) rotation.
    • The Move tools now support moving the rotation anchor, which changes the center of rotation.
    • The new Shapes tool replaces the Rectangle, Rounded Rectangle, Ellipse, and Freeform shape tools. 27 shapes are currently available. You may move, resize, and rotate a shape, as well as reconfigure any other properties from the toolbar (color, outline size, etc.) before committing it to the layer.
    • Color Picker has a configurable sampling radius, and can sample from either the current layer or the whole image.
    • Gradient tool now supports a new Spiral gradient type and allows configuration of the repeat mode (none, repeat, wrapped).
    • Gradient tool has improved rendering quality via dithering and antialiasing. You can control both of these with the standard antialiasing toggle in the toolbar.
    • Magic Wand and Paint Bucket now allow live adjustment of Tolerance and the Origin (click location) after clicking (press Enter to commit/finish).
    • Magic Wand and Paint Bucket can now sample from either the current layer or the whole image.
    • Paint Bucket tool now supports anti-aliasing.
    • Recolor tool can now use the color of the pixel where you click as the color to be replaced. Or, as usual, it can use the secondary color.
    • Text tool now supports multiple rendering modes: Smooth, Sharp (Modern), and Sharp (Classic). These correspond to DirectWrite rendering modes of Outline, ClearType Natural Symmetric, and GDI Classic, respectively.
    • Text tool now supports colored fonts on Windows 8.1.

Enjoy! Smile

The penultimate build is here: the release candidate! The only changes that should occur between this build and the final release are the those related to the translations. In other words, the code is complete unless there’s a Priority Defcon 0 Nuclear Holocaust type bug that’s found (which I don’t expect). I believe the final release will be sometime next week.

As usual, to install, you can either 1) use the built-in updater from a previous 4.0 build, or 2) use the built-in updater from v3.5.11 if you have “Also check for pre-release (beta) builds”, or 3) download from the forum at http://forums.getpaint.net/index.php?/topic/28734-paintnet-40-release-candidate-build-5284/

Changes since the last beta build (5278):

  • Pasting with the Text tool should no longer hide the move handle
  • The rotation anchor (Move, Shapes) is now less intrusive
  • Fixed focus rectangles in some controls that effects use (check boxes, radio buttons, sliders)
  • Fixed a layout issue with the ruler in some very specific scenarios
  • Hardware acceleration is now enabled by default for some Intel GPUs (e.g. Intel HD 4000 series)

Have fun with the final code over the weekend :)

Follow

Get every new post delivered to your Inbox.

Join 262 other followers