将用户资源文件中的透明图像设置为

时间:2017-02-05 00:56:36

标签: c# wpf image xaml code-behind

已经提出了这个问题的不同版本,但这些问题的解决方案并不符合我的要求。

假设我们在名为MyResource.resx的项目文件夹中有一个名为Accept.png的资源文件和一个图像文件Icons,并且对此图像的引用位于MyResource.resx

我正在寻找一种方法来设置具有以下要求的Image UIElement的来源:

  1. 重构图片名称 ...
  2. 保持透明度
  3. 当我意外地从其位置删除图像文件时会发现(编译错误应该发生)。
  4. 这是我已经测试过的。

    1:在代码背后:

    myImage.Source = new BitmapImage(new Uri(@"\Icons\Accept.png", UriKind.Relative));
    

    此代码的问题是:不可能进行重构,甚至最糟糕的是,与错误的uri相关的错误仅在运行时。

    2:再次出现在代码背后:

    myImage.Source = MyResource.Accept.ToBitmapImage()
    

    其中.ToBitmapImage()是我在互联网上找到的方法:

    public static BitmapImage ToBitmapImage(this System.Drawing.Bitmap bitmap)
            {
                using (MemoryStream memory = new MemoryStream())
                {
                    bitmap.Save(memory, ImageFormat.Bmp);
                    memory.Position = 0;
                    BitmapImage bitmapImage = new BitmapImage();
                    bitmapImage.BeginInit();
                    bitmapImage.StreamSource = memory;
                    bitmapImage.CacheOption = BitmapCacheOption.OnLoad;
                    bitmapImage.EndInit();
                    return bitmapImage;
                }
            }
    

    此代码的唯一问题是图像透明度已丢失。

    在Xaml中:

    <Image x:Name="myImage" Source="/Icons/Accept.png" />
    

    此代码的问题是:不能进行重构,并且不会显示与错误的uri相关的错误。它们甚至在运行时都没有被注意到。

    我尝试在this tutorial之后使用xaml中的资源文件,但我失败了。

    那怎么做。

0 个答案:

没有答案