如何实现映射应用程序的alpha图标透明度

时间:2014-03-26 07:46:56

标签: c# wpf

我有一个时间表应用程序,它基于时间映射当前应用程序,我使用映射的应用程序图标作为指示的符号,我无法实现透明度,因为在映射完成时黑色背景与应用程序图标一起出现,这是我的代码,我试图通过许多代码实现它但无法找到任何解决方案,我认为转换器类图像存在问题

这是它的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;
    }
}

1 个答案:

答案 0 :(得分:1)

我找到了解决方案,实际上位图不支持透明度,它支持但你必须硬编码一点,我找到了一个简单的解决方案,你必须以png格式制作图像,而不是你可以实现透明度。所以只改了一行

image.Save(memoryStream, ImageFormat.Bmp);

将转换器类中的此行更改为

 image.Save(memoryStream, ImageFormat.Png);