none
wpf BitmapImage后台如何使用项目包含的图片文件 RRS feed

  • 问题

  • 项目

    ProjectA/Images/1.jpg

    如何在后台使用代码加载该图片,我试了下

    var image= new BitmapImage(new Uri("/Images/1.jpg", UriKind.Relative));

    var image = new BitmapImage(new Uri(@"\Images\1.jpg", UriKind.Relative));

    都没法加载成功,该如何做

    2014年1月6日 6:17

答案

  • 你想啊!如果项目部署了,你的图片放在Bin下面的Image文件夹还是哪里?当然是Bin下面的Image文件夹。
    • 已标记为答案 skczjun 2014年1月16日 0:15
    2014年1月13日 11:23

全部回复

  • 右键图片选择属性,将图片的生成操作改成Resource

    2014年1月6日 7:48
  • 右键图片选择属性,将图片的生成操作改成Resource

    仍然不行
    2014年1月7日 1:23
  • 您好!

    我是这样来操作的,在项目文件夹下新建了Images文件夹,然后导入需要的图片,此时图片是已Resource的形式存在的。请看下面的截图:

    我们不需要做任何的修改。

    我新建了一个例子,请参考:

    XAML Code:

    <Window x:Class="WPFImageResouces.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            Title="WPF Image Resources" 
            Loaded="Window_Loaded"
            Height="300" Width="300">
        <Grid>
            <Image x:Name="mapImage" />
        </Grid>
    </Window>

    C# Code:

            private void Window_Loaded(object sender, RoutedEventArgs e)
            {
                BitmapImage bitmapImage = new BitmapImage(new Uri(@"Images\map.png",UriKind.RelativeOrAbsolute));
                this.mapImage.Source = bitmapImage;
            }

    程序运行截图:

    同时我把这个例子上传至SkyDrive上,您可以点击这里下载。

    如果以上回复无法解决您的问题,建议您提供一个Sample,这样我可以本地调试下,也有利于问题的解决。

    感谢您对MSDN的理解和支持!

    祝您生活愉快!


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2014年1月7日 2:27
    版主
  • 您好!

    你的例子我看了,我也下下来看了代码,然后我在此基础上,将我需要的获取图片的功能加上后,就无法获取到图片了。我的图片显示是采用的绑定方式,然后将绑定的数据传入线程池中,在线程池中获取图片(因为需要从网上加载,加载失败时从本地资源加载图片)。

    我将修改过的代码发到SkyDrive上了,您可以点击这里下载
    2014年1月10日 1:26
  • 您好!

    我下载了您的代码,在后台代码中我发现您没有对Image控件进行赋值。另外我想我们不应该用ThreadPool来执行这个操作,使用ThreadPool我们无法得到何时操作已经完成。因为我们获取到图片之后,只是将他赋值给了另一个BitmapImage对象。我建议我们用异步操作来做,当获取到图片后,将其赋值到UIImage对象上。

    祝您生活愉快!


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2014年1月10日 7:13
    版主
  • 您好。

    代码我重新看了下,发现自己没有仔细检查,代码有问题,现在已经改过了。同样可以在线程内修改UI的图片,但是必须将map的文件拷贝到exe所在的文件夹。而我想要的是不拷贝map到exe目录下也能正常显示。

    项目点击这里

    2014年1月11日 3:13
  • 你想啊!如果项目部署了,你的图片放在Bin下面的Image文件夹还是哪里?当然是Bin下面的Image文件夹。
    • 已标记为答案 skczjun 2014年1月16日 0:15
    2014年1月13日 11:23