Я не могу ответить вам относительно GDI, однако я хотел бы предложить, чтобы ваш метод наложения всегда брал одно и то же изображение формата (24-разрядное RGB), и перед выполнением наложения запомните формат входного изображения и преобразуйте полученное изображение к нему для пользователей. Так что, возможно, три метода, как в этом грубом псевдокоде:
- ConvertImageFormat (TargetFormat, ImageObject)
- OverlayText (ImageObject, Text)
- GetImageFormat (ImageObject)
UserFormat = GetImageFormat(SourceImage);
TempImage = ConvertImageFormat(RGBFormat, SourceImage);
ImageWithText = OverlayText(TempImage, Text);
UserImage = ConvertImageFormat(UserFormat, ImageWithText);