Как использовать 32-битный альфа-смешанный BMP в .Net - PullRequest
4 голосов
/ 03 сентября 2008

Есть ли способ использовать этот формат в .Net (C #)? Я хочу использовать тот же формат скина, который использует uTorrent в моем приложении, но не могу получить прозрачный фон. Есть идеи? Спасибо за ваше время.

Ответы [ 3 ]

3 голосов
/ 09 октября 2008

Вам нужно сделать две вещи:

  • Скопируйте растровое изображение в форму в качестве фона.
  • Вызовите UpdateLayeredWindow (user32.dll), чтобы включить альфа-прозрачность для каждого пикселя.

Код немного громоздкий, но вот очень хороший пример приложения с исходным кодом: На пиксельное альфа-смешение в C #

2 голосов
/ 19 мая 2011

Хотя формат BMP поддерживает альфа-канал, Windows игнорирует его. К счастью, формат довольно прост, и вы можете прочитать его с помощью System.IO.BinaryReader, а затем создать DrawingBitmap, используя методы LockBits и UnlockBits для записи данных в него.

2 голосов
/ 03 сентября 2008

Перечисление PixelFormat перечисляет форматы «растровых изображений», которые вы можете создавать в .Net, так что вам нужно PixelFormat.Format32bppArgb:

http://msdn.microsoft.com/en-us/library/system.drawing.imaging.pixelformat.aspx

http://msdn.microsoft.com/en-us/library/3z132tat.aspx

Однако я не совсем уверен, что формат файла BMP поддерживает прозрачность - поэтому вам придется сохранить файл как файл PNG.

...