{"id":142,"date":"2007-02-26T11:20:43","date_gmt":"2007-02-26T10:20:43","guid":{"rendered":"http:\/\/www.itwriting.com\/blog\/?p=142"},"modified":"2007-02-26T11:20:43","modified_gmt":"2007-02-26T10:20:43","slug":"got-paintnet","status":"publish","type":"post","link":"https:\/\/www.itwriting.com\/blog\/142-got-paintnet.html","title":{"rendered":"Got Paint.NET?"},"content":{"rendered":"<p>I am late with this; Paint.NET 3.0 was released at the end of last month. It deserves more publicity, since it is of high quality. If you have .NET Framework 2.0,&nbsp;<a href=\"http:\/\/www.getpaint.net\/\" target=\"_blank\">Download it here<\/a>.<\/p>\n<p>The application is fine for general use; I may switch to it from my old favourite Paint Shop Pro, for trimming and touching up screen captures.&nbsp;One feature I like is the way it handles multiple documents. A thumbnail&nbsp;of each open document appears at top right, in a fat toolbar; click a thumbnail to switch to that document. <\/p>\n<p>Paint.NET is&nbsp;particularly interesting for developers. It is written in C#, and started out as a design project; as I understand it, one of the intentions was to discover whether Microsoft&#8217;s .NET Framework was up to the task, given that image applications do a lot of intensive number-crunching. Most of the code is C# but not quite all. There is a shell extension written in C++ and some use of PInvoke and COM interop. I get the impression that the chief developer Rick Brewster is now more interested in creating an excellent application than in proving a point about .NET.<\/p>\n<p>One point of interest is the user of multi-threading for optimized performance on multicore processors. Brewster has <a href=\"http:\/\/blogs.msdn.com\/rickbrew\/archive\/2007\/02\/23\/paint-net-3-0-benchmarked-dual-vs-quad-vs-eight-cores.aspx\" target=\"_blank\">recently posted<\/a> his performance tests on various processors from two to eight cores:<\/p>\n<blockquote>\n<p>The 8-core system is <strong>frightfully fast<\/strong>, and it&#8217;s very clear that having rendering code optimized for multiple threads is a big win. However, I will be honest and state that the performance scaling is not at the level I was hoping for: we&#8217;re already seeing diminishing returns at this point! In general, I am seeing gains of about 3.0x on a quad-core system, and 5.1x on an 8-core system (compared to running with only 1 thread). Unfortunately, I do not have an 8-core Opteron system to compare against which might provide some more meaty information to chew on (does it scale better? worse?).<\/p>\n<\/blockquote>\n<p>I take his point, though a 5.1x gain on an 8-core system strikes me as decent. I recommend downloading the source code and taking a look; it is well commented and has workarounds for various System.Windows.Forms annoyances. Before you ask the obvious question,&nbsp;Brewster recently commented in the Paint.NET forum that he has not yet looked at WPF (Windows Presentation Foundation).<\/p>\n<p>&nbsp;<\/p>\n<div class=\"wlWriterSmartContent\" id=\"0767317B-992E-4b12-91E0-4F059A8CECA8:34f5e015-42a1-4cf1-94f2-d538d3a21551\" contenteditable=\"false\" style=\"padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px\">Technorati tags: <a href=\"http:\/\/technorati.com\/tags\/paint.net\" rel=\"tag\">paint.net<\/a>, <a href=\"http:\/\/technorati.com\/tags\/.net\" rel=\"tag\">.net<\/a>, <a href=\"http:\/\/technorati.com\/tags\/performance\" rel=\"tag\">performance<\/a>, <a href=\"http:\/\/technorati.com\/tags\/threading\" rel=\"tag\">threading<\/a><\/div>\n","protected":false},"excerpt":{"rendered":"<p>I am late with this; Paint.NET 3.0 was released at the end of last month. It deserves more publicity, since it is of high quality. If you have .NET Framework 2.0,&nbsp;Download it here. The application is fine for general use; I may switch to it from my old favourite Paint Shop Pro, for trimming and &hellip; <a href=\"https:\/\/www.itwriting.com\/blog\/142-got-paintnet.html\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Got Paint.NET?<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[80,97],"tags":[],"class_list":["post-142","post","type-post","status-publish","format-standard","hentry","category-software-development","category-windows"],"_links":{"self":[{"href":"https:\/\/www.itwriting.com\/blog\/wp-json\/wp\/v2\/posts\/142","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.itwriting.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.itwriting.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.itwriting.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.itwriting.com\/blog\/wp-json\/wp\/v2\/comments?post=142"}],"version-history":[{"count":0,"href":"https:\/\/www.itwriting.com\/blog\/wp-json\/wp\/v2\/posts\/142\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.itwriting.com\/blog\/wp-json\/wp\/v2\/media?parent=142"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.itwriting.com\/blog\/wp-json\/wp\/v2\/categories?post=142"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.itwriting.com\/blog\/wp-json\/wp\/v2\/tags?post=142"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}