GDI +:如何将图像叠加在另一个图像的顶部?(不使用Graphics对象)

时间:2010-01-28 09:22:50

标签: c# image-processing gdi+ image-manipulation

我正在开发一种解决方案,使我们的用户能够在图像上绘制注释。到目前为止,我正在使用图形对象在另一个上绘制图像(注释)。 问题是我们不能总是从图像中获取Graphics对象(如果我们尝试获取索引格式化图像的图形对象,GDI +会抛出异常)

所以问题是:

我有什么方法可以解决这个问题?我可以暂时更改PixelFormat,获取图形对象,绘制并将其恢复为原始格式,还是可以在不使用Graphics对象的情况下在另一个上绘制图像?

1 个答案:

答案 0 :(得分:1)

我无法回答你有关GDI的问题但是我建议你的叠加方法总是采用相同的格式(RGB 24位)图像,并且在执行叠加之前,记住输入图像格式并转换结果图像为用户。所以也许在这个粗糙的伪代码中有三种方法:

  • ConvertImageFormat(TargetFormat,ImageObject)
  • OverlayText(ImageObject,Text)
  • GetImageFormat(ImageObject)
    UserFormat = GetImageFormat(SourceImage);
    TempImage = ConvertImageFormat(RGBFormat, SourceImage);
    ImageWithText = OverlayText(TempImage, Text);
    UserImage = ConvertImageFormat(UserFormat, ImageWithText);