Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Rendering to a single Bitmap object from multiple threads

What im doing is rendering a number of bitmaps to a single bitmap. There could be hundreds of images and the bitmap being rendered to could be over 1000x1000 pixels.

Im hoping to speed up this process by using multiple threads but since the Bitmap object is not thread-safe it cant be rendered to directly concurrently. What im thinking is to split the large bitmap into sections per cpu, render them separately then join them back together at the end. I haven't done this yet incase you guys/girls have any better suggestions.

Any ideas? Thanks

like image 668
Lee Treveil Avatar asked Mar 16 '09 01:03

Lee Treveil


1 Answers

You could use LockBits and work on individual sections of the image.

For an example of how this is done you can look at the Paint.Net source code, especially the BackgroundEffectsRenderer (yes that is a link to the mono branch, but the Paint.Net main code seems to be only available in zip files).

like image 137
Kris Erickson Avatar answered Sep 18 '22 14:09

Kris Erickson