这是我的代码:
<Image>
<Image.Source>
<Binding Source="{x:Static properties:Resources.myLogo}" Converter="{StaticResource BitmapToImageSourceConverter}" />
</Image.Source>
</Image>
BitmapToImageSourceConverter的Convert方法就是这样的:
public object Convert(object value, Type targetType, object parameter,
System.Globalization.CultureInfo culture)
{
MemoryStream ms = new MemoryStream();
((System.Drawing.Bitmap)value).Save(ms, System.Drawing.Imaging.ImageFormat.Bmp);
BitmapImage image = new BitmapImage();
image.BeginInit();
ms.Seek(0, SeekOrigin.Begin);
image.StreamSource = ms;
image.EndInit();
return image;
}
图像以应有的方式显示,但背景为黑色。我试图像这样修复它:
<StackPanel Width="230" Height="80" Grid.Column="0" Margin="85 -40 0 0" HorizontalAlignment="Left" VerticalAlignment="Bottom" Background="Transparent">
<Image>
<Image.Source>
<Binding Source="{x:Static properties:Resources.myLogo}" Converter="{StaticResource BitmapToImageSourceConverter}" />
</Image.Source>
</Image>
</StackPanel>
如何解决黑色背景?
我在这里使用@Dean的答案修复了它:从PNG到BitmapImage。透明度问题。
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;
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句