28

私はWindows8アプリに取り組んでいます。画像のソースをプログラムで設定する方法を知る必要があります。Silverlightアプローチが機能すると思いました。ただし、そうではありません。誰かがこれを行う方法を知っていますか?以下は機能しません。

string pictureUrl = GetImageUrl();
Image image = new Image();
image.Source = new Windows.UI.Xaml.Media.Imaging.BitmapImage(new Uri(pictureUrl, UriKind.Relative));
image.Stretch = Stretch.None;
image.HorizontalAlignment = Windows.UI.Xaml.HorizontalAlignment.Left;
image.VerticalAlignment = Windows.UI.Xaml.VerticalAlignment.Center;

「指定されたSystem.UriをWindows.Foundation.Uriに変換できません」という例外が発生します。

しかし、Windows.Foundation.Uriタイプが見つからないようです。

4

7 に答える 7

44

試してみました

Image.Source = new BitmapImage(
    new Uri("http://yourdomain.com/image.jpg", UriKind.Absolute));

そしてそれは問題なく動作します...私はSystem.Uriここで使用しています。おそらくあなたは不正な形式のURIを持っているか、絶対URIを使用してUriKind.Absolute代わりに使用する必要がありますか?

于 2012-06-29T18:48:01.167 に答える
17

これは私が使用するものです:

string url = "ms-appx:///Assets/placeHolder.png";
image.Source = RandomAccessStreamReference.CreateFromUri(new Uri(url));
于 2012-06-29T19:49:52.120 に答える
6

まあ、Windows.Foundation.Uriこのように文書化されています:

.NET:このタイプはSystem.Uriとして表示されます。

したがって、トリッキーなビットはそれを自分自身に変換することではありませんWindows.Foundation.Uri-WinRTがあなたのためにそれを行うように見えます。使用しているURIに問題があるようです。この場合、それは何に関連していますか?本当にURIの正しい形式を見つける必要があるのではないかと思います。

于 2012-06-29T18:44:54.647 に答える
5

この例では、FileOpenPickerオブジェクトを使用してストレージファイルを取得します。StorageFileオブジェクトとしてファイルにアクセスするために必要な任意のメソッドを使用できます。

ロゴは画像コントロールの名前です。

次のコードを参照してください。

    var fileOpenPicker = new FileOpenPicker();
    fileOpenPicker.ViewMode = PickerViewMode.Thumbnail;
    fileOpenPicker.SuggestedStartLocation = PickerLocationId.PicturesLibrary;
    fileOpenPicker.FileTypeFilter.Add(".png");
    fileOpenPicker.FileTypeFilter.Add(".jpg");
    fileOpenPicker.FileTypeFilter.Add(".jpeg");
    fileOpenPicker.FileTypeFilter.Add(".bmp");

    var storageFile = await fileOpenPicker.PickSingleFileAsync();

    if (storageFile != null)
    {
        // Ensure the stream is disposed once the image is loaded
        using (IRandomAccessStream fileStream = await storageFile.OpenAsync(Windows.Storage.FileAccessMode.Read))
        {
            // Set the image source to the selected bitmap
            BitmapImage bitmapImage = new BitmapImage();

            await bitmapImage.SetSourceAsync(fileStream);
            Logo.Source = bitmapImage;
        }
    }
于 2013-05-30T12:44:26.993 に答える
4

例外が発生したので、pictureUrlを確認してください。

しかし、これも機能するはずです

img.Source = new BitmapImage(new Uri(pictureUrl, UriKind.Absolute));

Windows.Foundation.Uriとは何の関係もありません。winrtが処理するためです。

于 2012-07-02T02:13:29.107 に答える
3

この形式を試してください:

ms-appx:/Images/800x600/BackgroundTile.bmp

指定されたSystem.UriをWindows.Foundation.Uriに変換することはできません

于 2012-06-29T18:48:04.137 に答える
0
<Image Name="Img" Stretch="UniformToFill" />

var file = await KnownFolders.PicturesLibrary.GetFileAsync("2.jpg");
using(var fileStream = (await file.OpenAsync(Windows.Storage.FileAccessMode.Read))){
     var bitImg= new BitmapImage();
     bitImg.SetSource(fileStream); 
     Img.Source = bitImg;
}
于 2015-12-28T09:14:00.320 に答える