0

/Images フォルダーにファイル animaha135.gif があり、「ビルド アクション」を「埋め込みリソース」または「リソース」として設定し、この画像をビットマップに取得したい:

            var image = new BitmapImage();
            image.BeginInit();
            image.UriSource = new Uri("pack://application:,,,/Images/animaha135.gif");
            image.EndInit();

しかし、それは機能しません:

リソース「images/animaha135.gif」が見つかりません。

私は何を間違っていますか?


この問題を解決しました。アセンブリの名前は、プロジェクトの名前とは異なります。私は同じように設定し、最初のコードは機能します

4

2 に答える 2

2

「組み込みリソース」としてビルドしないでください。「リソース」としてビルドします。->私のために働いた

編集:

これを使用して uri を作成します。

protected static Uri GetUri(string filename, Type type)
{
    Assembly assembly = type.Assembly;
    string assemblyName = assembly.ToString().Split(',')[0];
    string uriString = String.Format("pack://application:,,,/{0};component/{1}",
        assemblyName, filename);
    return new Uri(uriString);
}

これをカスタムシェーダーエフェクトに使用しました

于 2012-08-27T13:41:42.283 に答える
0

If you use embeed resources, you need read assembly maniffest

      private void LoadImg()
    {

       //x is name of <Image name="x"/>
       x.Source = GetResourceTextFile(GetResourcePath("Images/animaha135.gif"));


    }


    private string GetResourcePath(string path)
    {
        return path.Replace("/", ".");
    }


    public BitmapFrame GetResourceTextFile(string filename)
    {

        string result = string.Empty;

        using (Stream stream = this.GetType().Assembly.GetManifestResourceStream(String.Format("{0}.{1}",this.GetType().Assembly.GetName().Name,filename)))
        {
            BitmapFrame bmp = BitmapFrame.Create(stream);
            return bmp;
        }

    }

Other solution (return Bitmap):

 //Use   BitmapImage bitmap = GetResourceTextFile(GetResourcePath("Images/animaha135.gif"));


    public BitmapImage GetResourceTextFile(string filename)
    {

        string result = string.Empty;

        using (Stream stream = this.GetType().Assembly.GetManifestResourceStream(String.Format("{0}.{1}",this.GetType().Assembly.GetName().Name,filename)))
        {

            BitmapImage bi = new BitmapImage();
            bi.BeginInit();
            bi.StreamSource = stream;
            bi.EndInit();

            return bi;
        }

    }

Note: Embed resources replace path => / by .

于 2012-08-27T13:52:38.717 に答える