从PNG到BitmapImage.透明度问题.

kor*_*ead 2 .net c# wpf

我有一些问题.我正试图在我的viewModel中将png-image从资源加载到BitmapImage propery,如下所示:

Bitmap bmp = Resource1.ResourceManager.GetObject(String.Format("_{0}",i)) as Bitmap;
MemoryStream ms = new MemoryStream();
bmp.Save(ms, ImageFormat.Bmp);
BitmapImage bImg = new BitmapImage();

bImg.BeginInit();
bImg.StreamSource = new MemoryStream(ms.ToArray());
bImg.EndInit();

this.Image = bImg;
Run Code Online (Sandbox Code Playgroud)

但是当我这样做时,我失去了图像的透明度.所以问题是如何在不损失透明度的情况下从资源中加载png图像?谢谢,帕维尔.

Dea*_*ean 5

Ria的回答帮助我解决了透明度问题.这是适用于我的代码:

public BitmapImage ToBitmapImage(Bitmap bitmap)
{
  using (MemoryStream stream = new MemoryStream())
  {
    bitmap.Save(stream, ImageFormat.Png); // Was .Bmp, but this did not show a transparent background.

    stream.Position = 0;
    BitmapImage result = new BitmapImage();
    result.BeginInit();
    // According to MSDN, "The default OnDemand cache option retains access to the stream until the image is needed."
    // Force the bitmap to load right now so we can dispose the stream.
    result.CacheOption = BitmapCacheOption.OnLoad;
    result.StreamSource = stream;
    result.EndInit();
    result.Freeze();
    return result;
  }
}
Run Code Online (Sandbox Code Playgroud)