The goal was to simply port the C++ APIs to VB6, as I wanted to use GDI+ but could not find for the life of me anyone that had a sample, API declarations or the like. Thus, I bestow upon the world this code! I have declared every single API I could find and the required enums and constants, with the exception of two things: I did not know how to convert one 200+ line C++ enum to VB called EmfPlusRecordType, and I did not write a function to retrieve the constant values of the ImageFormat GUIDs (though you can do that somewhat easily). Estimated API conversion accuracy: 99% Correct. If you don't have WinXP or Win2k SP3, You will need the GDI+ RTM which is available here: http://www.microsoft.com/downloads/release.asp?releaseid=32738 . . . You should also read the beginning of the GDIPlusAPI module, as it has some useful information. If you find anything wrong, complain away, but show the fix when possible! I don't like when people have a problem and then simply say "I fixed it", as others may have a similar problem and not know how to fix it. I encourage everyone to edit the sample, post better samples, and make some classes to simplify the GDI+ usage even more! I'm not great at writing boring or even exciting introductions, so I'll try my best to explain some core ideas to you, and the code it also heavily commented, though not "well" commented. A GDI+ object class, for the purposes of VB, is simply a pointer (aka Long). The pointer, once retrieved, is simply passed ByVal to the API functions. All you really have to worry about is remembering to delete the object that the pointer represents when you are done. Some API functions also want arrays of types for a parameter (you'll usually see a count parameter associated with that function). Another important fact to remember is that ALL strings that GDI+ returns or uses MUST BE UNICODE! In this code I opted to use StrConv to achieve Unicode strings, and the APIs are accordingly declared As String, but you can alter the APIs to use the StrPtr result if you like, at the loss of clarity (which is important when you haven't memorized the usage!). Also, if you see "argb" floating around, it stands for Alpha-blending, Red, Green, and Blue - it is the color "encoding" scheme used by GDI+. I hope this will quickly cover some of the finer points about GDI+, but I can't rival the explainations of the GDI+ documentation: http://msdn.microsoft.com/library/en-us/gdicpp/ugdiplus_1hk5.asp?frame=true . . . Notes about the example code: Look at the mnuRedraw_Click menu event to see a list of available samples, and uncomment them to view the demo. For the thumbnail sample, you'll have to insert the filename of a huge file you'd like to view the thumbnail for.

