The Picture property of the ListImage object simply returns the picture you put into the ImageList. If you put in an icon, you get back an icon; if you put in a bitmap, you get back a bitmap. This works for icons no matter where you place the picture, but bitmaps don’t look good unless they contain a solid image or unless the background of the image is the same as the background of the target picture. This makes the Picture property somewhat inflexible for general use, but of course you can use PaintPicture to do anything you want with it.
The ExtractIcon method converts an image to an icon. If the image already is an icon, ExtractIcon is the equivalent of the Picture property. With a bitmap, ExtractIcon stretches or compresses it to the standard icon size, as determined by GetSystemMetrics, and uses the MaskColor property of the ImageList to make the image transparent. You can save the result to a file with SavePicture; just make sure that you set the MaskColor property to the color of the bitmap background. To see how this works in Test ImageList, use the Mask Color check box to set different colors that appear in the bitmap. This is a roundabout way to convert a bitmap to an icon. It’s much easier to use ImagEdit, although most bitmaps look terrible when converted to icons. The mechanism would be a lot more flexible if you could convert to an icon of any size (the size of the bitmap, for example). What you really want from ExtractIcon is its transparency, not a standard icon size. More on that later.