我有一个时间表应用程序,它基于时间映射当前应用程序,我使用映射的应用程序图标作为指示的符号,我无法实现透明度,因为在映射完成时黑色背景与应用程序图标一起出现,这是我的代码,我试图通过许多代码实现它但无法找到任何解决方案,我认为转换器类图像存在问题
这是它的xaml代码
<Image Source="{Binding Path=IconBinding, Converter={StaticResource imageConverter} }" Canvas.Left="100" Canvas.Top="10" Height="35"/>
这是imageconverter类的代码
public class ImageConverter : IValueConverter
{
public object Convert(object value, Type targetType,
object parameter, CultureInfo culture)
{
// empty images are empty...
if (value == null) { return null; }
var image = (System.Drawing.Image)value;
// Winforms Image we want to get the WPF Image from...
var bitmap = new System.Windows.Media.Imaging.BitmapImage();
bitmap.BeginInit();
MemoryStream memoryStream = new MemoryStream();
// Save to a memory stream...
image.Save(memoryStream, ImageFormat.Bmp);
// Rewind the stream...
memoryStream.Seek(0, System.IO.SeekOrigin.Begin);
bitmap.StreamSource = memoryStream;
bitmap.EndInit();
return bitmap;
}
public object ConvertBack(object value, Type targetType,
object parameter, CultureInfo culture)
{
return null;
}
}
答案 0 :(得分:1)
我找到了解决方案,实际上位图不支持透明度,它支持但你必须硬编码一点,我找到了一个简单的解决方案,你必须以png格式制作图像,而不是你可以实现透明度。所以只改了一行
image.Save(memoryStream, ImageFormat.Bmp);
将转换器类中的此行更改为
image.Save(memoryStream, ImageFormat.Png);