Как сохранить прозрачность изображения из обработчика HTTP при использовании Graphics.DrawImage?

У меня есть серия GIF-файлов, которые мне нужно обрезать на лету, я использую обработчик HTTP в C#, поэтому я могу лучше инкапсулировать код - обеспечить кэширование результата и т. д.

В настоящее время, когда я рисую существующее изображение в новый Image через объект Graphics, вся прозрачность теряется.

Я пробовал различные методы, чтобы попытаться сохранить прозрачность, но безрезультатно.

Что я пробовал:

  • Использование вызова метода MakeTransparent (Color)
  • Использование ImageAttriutes с комбинацией ColorMap и SetColorKey

Я действительно не хочу начинать использовать небезопасные операторы или вызовы Win32.

Любые идеи?


person Kieron    schedule 27.10.2008    source источник
comment
Комментарий не по теме - приятно видеть еще одного разработчика из Саутгемптона! :)   -  person Rob Cooper    schedule 27.10.2008


Ответы (2)


Кажется, на этот вопрос уже был дан ответ Как рисовать прозрачное изображение с помощью System. Рисовать?

person John Lemp    schedule 28.10.2008

Когда я использовал прозрачность, я всегда использовал Bitmap. т.е.

System.Drawing.Image SourceImage = System.Drawing.Image.FromFile("the.gif");
System.Drawing.Bitmap NewImage = new System.Drawing.Bitmap(SourceImage);
// Do Processing
NewImage.MakeTransparent();
// Store changes
NewImage.Save(..., System.Drawing.Imaging.ImageFormat.Png);

Конечно, если вы не можете отойти от объекта Graphics, то это может быть бесполезно.

person Ash    schedule 27.10.2008