2010-01-28 4 views
0

사용자가 이미지 위에 주석을 그릴 수있는 솔루션을 개발 중입니다. 지금까지 그래픽 개체를 사용하여 이미지 (주석)가 다른 이미지보다 문제는GDI + : 다른 이미지 위에 오버레이하는 방법 (그래픽 개체를 사용하지 않고)

그래서 질문은 (우리가 인덱스 형식의 이미지의 그래픽 객체를 얻기 위해 시도하는 경우 GDI +가 예외를 throw) 우리가 항상 이미지에서 그래픽 객체를 얻을 수 있다는 것입니다 :

무엇 이 문제를 해결할 수있는 방법은 무엇입니까? 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); 
관련 문제