Существует ли способ правильно отобразить изображение с альфа-каналом (скажем, PNG) в приложении C#? Спасибо за любые предложения.
ОБНОВЛЕНИЕ:
Хорошо, мой вопрос был немного неточен. Я хотел бы получить реальную прозрачность альфа-канала - не заполняющийся цветом фона родителя. В изображении ниже мы видим, что прозрачность поддерживается, но часть кнопки, которая находится ниже изображения, не видима. Действительно ли возможно иметь реальную прозрачность альфа-канала изображения?
Если это winforms, то нет. «прозрачность» в winforms - это не настоящая прозрачность.
Что вы можете сделать, так это создать буквенно-прозрачную форму, которая рисует PNG, и расположить ее в правильном месте, и связать движение и т. Д. http://www.codeproject.com/KB/GDI-plus/perpxalpha_sharp.aspx
PerPixelAlphaForm transparentImageForm = new PerPixelAlphaForm();
transparentImageForm.SetBitmap(<IMAGE GOES HERE>,<OPACITY GOES HERE>);
// непрозрачность - это непрозрачность, с которой будет нарисовано изображение, значение 255 = все прозрачные части будут альфа / transparent точно так же, как и исходный PNG и т. д.
РЕДАКТИРОВАТЬ: ИЛИ ПЕРЕЙДИТЕ В WPF.
Следующая ссылка 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+ имеет встроенные кодировщики и декодеры, которые поддерживают следующие типы файлов:
- BMP
- GIF
- JPEG
- PNG
- TIFF
Да, System.Drawing.Image.FromFile ("filename.png"); Платформа .NET поддерживает прозрачность для нескольких типов файлов, я не думаю, что она работает с JPEG, но PNG подойдет.