短いパス名でイメージを 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
クラスを定義するだけです。App
Application
この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に何かを追加することでこれを実現できるのではないかと疑っています(そして漠然とした記憶があります)が、それができないようです。
何か案は?