0

短いパス名でイメージを WPF プロジェクトにロードしたいと思います。詳細は次のとおりです。

次のようなWPFソリューションがあります。

Solution 'GB" (16 projects)   
   ABApp
     Properties
     References
     ...   ...   
   ImageApp
     Properties
     References
     images
        mona.jpg
     App.xaml
        App.xaml.cs
     Window1.xaml
        Window1.xaml.cs

ImageAppプロジェクトを見てみたい。

ファイルは次のApp.xamlようになります。

<Application x:Class="GB.App"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         StartupUri="Window1.xaml">
    <Application.Resources>
    </Application.Resources>
</Application>

から派生するApp.xaml.csクラスを定義するだけです。AppApplication

このWindow1.xamlファイルは UI をWindow1.xaml.cs構築し、さまざまな画像が表示される描画領域を構築します。

その C# ファイル内に、images/mona.jpg表示したい画像をロードするために、次のように記述します。

        Image myImage;

        BitmapImage myBitmapImage = new BitmapImage();

        myBitmapImage.BeginInit();
        myBitmapImage.UriSource = 
             new Uri("../../images/mona.jpg", UriKind.RelativeOrAbsolute);
        myBitmapImage.EndInit();
        //set image source
        FormatConvertedBitmap newFormatedBitmapSource = new FormatConvertedBitmap();

        newFormatedBitmapSource.BeginInit();
        newFormatedBitmapSource.Source = myBitmapImage;
        newFormatedBitmapSource.DestinationFormat = PixelFormats.Bgra32;
        newFormatedBitmapSource.EndInit();
        bmpSource = newFormatedBitmapSource;
        myImage.Source = bmpSource;
        BuildRenderTransform();

(そのコードについてお詫び申し上げます。これは、実際に行われていることを簡略化したものであるため、完全な文字ではない可能性があります。)

私の質問は Uri に関するものです../../。実行中のプログラム (最終的にはImageApp/bin/Debug) が、2 レベル上に移動してからimagesフォルダーに下に移動する必要があることを認識できるように、Uri の先頭に記述する必要があります。new Uri("images/mona.jpg", ...)代わりに何かを書くことができる方法はありますか?ソース ディレクトリを相対検索の開始パスとして使用するように WPF に指示できますか?

正直に言うと、マイクロソフトのヘルプ記事といくつかの StackExchange の質問/回答を読んだにもかかわらず、Uri のすべてのことはほとんど困惑しています..

プロジェクトのxamlに何かを追加することでこれを実現できるのではないかと疑っています(そして漠然とした記憶があります)が、それができないようです。

何か案は?

4

1 に答える 1

1

よくわかりませんが(今は確認できません)、次のように指定してみてください

new Uri("/ImageApp;component/images/mona.jpg");

そして、参照に ImageApp があることを確認してください

于 2014-03-13T22:28:09.987 に答える