Отображение PNG с альфа-каналом в C # - PullRequest
9 голосов
/ 24 июня 2010

Есть ли способ правильно отобразить изображение с альфа-каналом (скажем, PNG) в приложении C #? Спасибо за любые предложения.

UPDATE:

ОК, мой вопрос был немного неточным. Я хотел бы получить реальную прозрачность альфа-канала - не заливая цветом фона родителя. На изображении ниже мы видим, что прозрачность поддерживается, но та часть кнопки, которая находится под изображением, не видна. Возможно ли иметь реальную прозрачность альфа-канала изображения?

изображение с неполной прозрачностью http://img684.imageshack.us/img684/8804/transpt.jpg

Ответы [ 3 ]

8 голосов
/ 24 июня 2010

Если это winforms, то нет. «прозрачность» в winforms не является реальной прозрачностью.

Что вы можете сделать, это создать альфа-прозрачную форму, которая рисует PNG и размещает его в правильном месте, перемещает связывание и т. Д. alt text http://www.codeproject.com/KB/GDI-plus/perpxalpha_sharp.aspx

PerPixelAlphaForm transparentImageForm = new PerPixelAlphaForm();
transparentImageForm.SetBitmap(<IMAGE GOES HERE>,<OPACITY GOES HERE>);

// непрозрачность - это непрозрачность, с которой будет нарисовано изображение, значение 255 = все прозрачные части будут альфа / прозрачными так же, как исходный PNG и т. Д.

РЕДАКТИРОВАТЬ: ИЛИ ПЕРЕЙТИ В WPF.

3 голосов
/ 24 июня 2010

Да, System.Drawing.Image.FromFile ("filename.png"); .NET Framework поддерживает прозрачность для нескольких типов файлов, я не думаю, что это работает с JPEG, но PNG должен быть в порядке.

0 голосов
/ 24 июня 2010

Следующая ссылка MSDN поможет:

WPF: http://msdn.microsoft.com/en-us/library/aa970062.aspx

Windows: http://msdn.microsoft.com/en-us/library/stf701f5.aspx

О методе System.Drawing.Image.FromFile:

Управляемый GDI + имеет встроенные кодеры и декодеры, которые поддерживают файлы следующих типов:- БМП- GIF- JPEG- PNG- TIFF

...