GDI +: Как наложить изображение поверх другого? (Без использования графического объекта) - PullRequest
0 голосов
/ 28 января 2010

Я работаю над решением, которое позволяет нашим пользователям рисовать аннотации поверх изображений. До сих пор я использую графический объект для рисования изображения (аннотации) поверх другого. Проблема в том, что мы не всегда можем получить графический объект из изображения (GDI + выдает исключение, если мы пытаемся получить графический объект индексированного отформатированного изображения)

Так что вопрос:

каковы мои варианты решения этой проблемы? Могу ли я временно изменить PixelFormat, получить графический объект, выполнить рисование и вернуть его в исходный формат, или я могу нарисовать изображение поверх другого без использования объекта Graphics?

1 Ответ

1 голос
/ 08 февраля 2010

Я не могу ответить вам относительно 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);
...