Сначала вы можете попробовать dynamic_cast
, как во многих случаях (если не в большинстве - по крайней мере, в моих случаях использования) Image
действительно является Bitmap
. Так
Image* img = getThumbnail( /* ... */ );
Bitmap* bitmap = dynamic_cast<Bitmap*>(img);
if(!bitmap)
// getThumbnail returned an Image which is not a Bitmap. Convert.
else
// getThumbnail returned a Bitmap so just deal with it.
Однако, если как-то это не так (bitmap
будет NULL
), то вы можете попробовать более общее решение.
Например, сохраните Image
в COM IStream
, используя метод Save
, а затем используйте Bitmap::FromStream
для создания Bitmap
из этого потока.
Простой COM IStream
может быть создан с использованием функции CreateStreamOnHGlobal
WinAPI . Однако это неэффективно, особенно для больших потоков, но для проверки идеи это подойдет.
Существуют также другие подобные решения, которые можно вывести из чтения Image
и Bitmap
документации.
К сожалению, я не пробовал самостоятельно (с Image
, который не является Bitmap
), поэтому я не совсем уверен.