I have a WinForms program that needs a decent scrollable icon control with large icons (128x128 or larger thumbnails, really)
Disclaimer: I work for Atalasoft
There is an image thumbnail control in our .NET Imaging SDK, DotImage
Making a custom control wouldn't be too bad. I would inherit from Panel or a Usercontrol as I believe both automatically add scrollbars for the content.
Dynamically adding containers (like PictureBoxes) and captions for each image, handling the mousedown or mouseclick event for the container and perhaps drawing a red square around it to show that it is selected. The "hardest" part would be resampling the image to 128x128 if they are not already that size and even that can easily be with GDI+.
ObjectListView (an open source wrapper around a .NET ListView) makes it easy to custom draw a Tile view. Have a look at the Complex view on the demo, switch to Tile view when custom draw is enabled:
(source: sourceforge.net)
If you only wanted a 128x128 image plus some text details, you wouldn't even need to owner draw it. You could give it a large imagelist, and then mark which bits of textual information you wanted to show on the Tile, using IsTileViewColumn.
For update:
You could use the FlowLayoutPanel and drop pictureboxes in it. Set the picturebox to a size of 128x128 and the sizemode to 'zoom' (This takes care of resizing your image without loss of aspect ratio). You can even programatically add the pictureboxes.
PictureBox pb = New Picturebox;
pb.image = gcf.image128;
FlowLayoutPanel1.Controls.Add(pb)
Since you need to have a label under the picturebox, you could create a Usercontrol like Pastor said that all it has is a picturebox and a label under it. Then that would be the control instance you would add to your flowlayoutpanel.