2010-01-28 3 views
0

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

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

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

ответ

1

Я не могу ответить вам в отношении GDI, однако я бы предположил, что ваш метод наложения всегда может принимать один и тот же формат (RGB 24-битное) изображение, а до выполнения наложения запоминать формат входного изображения и преобразовывать результат изображение для него для пользователей. Поэтому, возможно, три способа, как в этом грубом псевдокоде:

  • ConvertImageFormat (TargetFormat, ImageObject)
  • OverlayText (ImageObject, текст)
  • GetImageFormat (ImageObject)
 
    UserFormat = GetImageFormat(SourceImage); 
    TempImage = ConvertImageFormat(RGBFormat, SourceImage); 
    ImageWithText = OverlayText(TempImage, Text); 
    UserImage = ConvertImageFormat(UserFormat, ImageWithText); 
Смежные вопросы