2

我正在尝试将图像源设置为我的计算机中的某些内容(而不是资产中的内容)。
这就是我试图做到这一点的方式:

Uri uri = new Uri(@"D:\Riot Games\about.png", UriKind.Absolute);
ImageSource imgSource = new BitmapImage(uri);

this.image1.Source = imgSource;

我尝试了几乎所有可以在互联网上找到的东西,但似乎没有任何效果。

知道为什么吗?

XAML:

<UserControl
    x:Class="App11.VideoPreview"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:App11"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    d:DesignHeight="250"
    d:DesignWidth="250">

    <Grid>
        <Button Height="250" Width="250" Padding="0" BorderThickness="0">
            <StackPanel>
                <Image Name="image1" Height="250" Width="250"/>
                <Grid Margin="0,-74,0,0">
                    <Grid.Background>
                        <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0" Opacity="0.75">
                            <GradientStop Color="Black"/>
                            <GradientStop Color="#FF5B5B5B" Offset="1"/>
                        </LinearGradientBrush>
                    </Grid.Background>
                    <TextBlock x:Name="textBox1" TextWrapping="Wrap" Text="test" FlowDirection="RightToLeft" Foreground="White" Padding="5"/>
                </Grid>
            </StackPanel>
        </Button>
    </Grid>
</UserControl>
4

1 回答 1

7

您不能直接从 Windows Metro 应用程序访问磁盘驱动器。从Windows 商店应用程序中的文件访问权限中提取

默认情况下,您可以使用 Windows 应用商店应用访问某些文件系统位置,例如应用安装目录、应用数据位置和下载文件夹。应用程序还可以通过文件选择器或通过声明功能来访问其他位置。

但是您可以Pictures library通过启用包清单文件中的功能来访问一些特殊的文件夹,例如文档库等。因此,从清单文件启用图片库后,此代码将起作用(将 about.png 文件复制到图片库文件夹中)

    private async void SetImageSource()
    {
        var file = await 
          Windows.Storage.KnownFolders.PicturesLibrary.GetFileAsync("about.png");
        var stream = await file.OpenReadAsync();
        var bitmapImage = new BitmapImage();
        bitmapImage.SetSource(stream);

        image1.Source = bitmapImage;
    }

但理想的解决方案是将您的文件包含在您的应用程序中并将其构建操作设置为 Content 以便可以将其与其他内容文件一起复制到您的Appx文件夹中。然后你可以像这样设置图像源 -

    public MainPage()
    {
        this.InitializeComponent();
        Uri uri = new Uri(BaseUri, "about.png");
        BitmapImage imgSource = new BitmapImage(uri);
        this.image1.Source = imgSource;
    }

或者您可以仅在 XAML 中执行此操作:

<Image x:Name="image1" Source="ms-appx:/about.png"/>

这是您可以从应用程序访问的特殊文件夹列表 -

  1. 本地应用数据
  2. 漫游应用数据
  3. 临时应用数据
  4. 应用安装位置
  5. 下载文件夹
  6. 文档库
  7. 曲库
  8. 图片库
  9. 影片库
  10. 可卸除的设备
  11. 家庭组
  12. 媒体服务器设备

要启用清单文件中的功能,请双击Package.appxmanifest解决方案中的文件并Pictures Library选中功能选项卡下的复选框以为您的应用程序启用它。同样,您可以对要访问的其他文件夹执行此操作。

在此处输入图像描述

于 2013-08-24T13:48:43.740 回答