9

ローカル リソースを使用して、ボタン内にアイコンを配置しようとしています。(C# ビジュアルスタジオ 2012)

プロジェクト内に直接、「Icons/MyIcon.png」を含む「Resources」というフォルダーがあります。

次のコードは機能します (ただし、相対パスを使用していません)。

<Button Width="20" Height="20">
  <Button.Background>
        <ImageBrush ImageSource="C:\Documents\MyProject\Resources\Icons\MyIcon.png">
          </ImageBrush>
      </Button.Background>

ただし、相対パスを使用したいので...次のことを試しました

  <ImageBrush ImageSource="..\MyProject\Resources\Icons\MyIcon.png">

コンパイルされますが、エラーが発生します。

{"Cannot locate resource 'myproject/resources/icons/myicon.png'."}

次に、プロジェクトを参照することについて話し、そうするように言った記事を見つけました:

"/[ assembly name ];component[ path within the project ]"

だから私はそれを試しました:

<ImageBrush ImageSource="/MyProject;component\Resources\Icons\MyIcon.png">

しかし、うまくいきません。

GUIビルダーに表示されます...しかし、実際にコードを「デバッグ」しようとすると...実行に失敗します。

たとえば、「123」を追加してパスをまったく変更した場合:

 <ImageBrush ImageSource="/MyProject;component\Resources\Icons\MyIcon123.png">

「指定されたファイルが見つかりません」というプリコンパイル エラーが発生します。「123」を削除すると、エラーはなくなります。そして、アイコンが再びフォームに表示されます。しかし、私が実行すると...私はまだ取得します:

{"Cannot locate resource 'resources/icons/myicon.png'."}

何が起こっている?実行前にしかリソースを見つけられないのはなぜですか? 私が実際に始めたときではありませんか?

4

4 に答える 4

9

イメージの BuildAction を Resource に設定する必要がありますか? アセンブリに組み込まれていますか?それとも、コンテンツのように扱っていますか? その場合、BuildAction を Content に設定し、CopyToOutputDirectory を適切に設定します。

リソース、コンテンツ ファイルなどを扱う MSDN 記事へのリンクを次に示します。

于 2012-09-27T23:06:04.087 に答える
6

これは古い投稿であることは知っていますが、VS2013 の場合、これらの例はどれもうまくいきませんでしたが、それらすべてを組み合わせることで、URI 内の画像リソースとソースを参照する必要があります..

"pack://application:,,,/!APP NAME!;component/Resources/Purple.bmp"

もちろん!APP NAME!あなたの代わりに.."pack://application:,,,/test1;component/Resources/Purple.bmp"

Resources/Purple.bmpまた、あなたのパスに置き換えてください。

重要: component/は定数であり、パスの一部ではありません。

于 2015-04-23T19:57:03.763 に答える
1

これについては、こちらのブログ投稿で取り上げました。

「Images」という名前のフォルダの場合、基本的には次のようになります。.xaml ファイルが別のフォルダーにある場合は、../Images/favicon.ico. どちらの場合も、プロジェクト名をパスの先頭に追加する必要はないことに注意してください。詳細が必要な場合は、投稿の最後にあるサンプル プロジェクトを参照してください。

<Image Margin="5" Source="/Images/favicon.ico" Height="100"/>
于 2012-09-27T23:27:28.350 に答える
0

これは、リソースフォルダーがアプリケーションにある画像の相対パスで機能しました。

  <Image Source="..\Images\down_arrow.gif" />
于 2012-09-30T05:50:10.393 に答える