none
リソース画像を Window.Background に設定する方法 RRS feed

  • 質問

  • こちらでははじめまして、ひらぽんです。
    先日より WPF アプリケーションを始めたため、勝手がよく判っておりません。つまんない質問かも知れませんが、お許しください。<(_ _)>

    リソース画像を Window.Background に設定する方法が判りません。

    まず xxxx.png という PING ファイルを用意し、プロジェクトのリソースに追加しました。
    ファイルのビルドアクションは「埋め込まれたリソース」にしております。

    次に以下のように XAML を書いてみました。

    <Window x:Class="dogbear48.Window1"
    
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    
     Title="Window1" Height="300" Width="300" Foreground="WhiteSmoke">
    
     <Window.Background>
    
      <ImageBrush ImageSource = "xxxx" Stretch="None"/> 
    
     </Window.Background>
    
     <Grid>
    
     </Grid>
    
    </Window>
    
    

    すると以下のエラーが表示されます。

    「ファイル xxxx はプロジェクトの一部ではないか、'Build Action' プロパティが 'Resource' に設定されていません」

    そこでビルドアクションを「Resource」に変更し、ImageBrush の設定を以下のように換えてみました。

    <ImageBrush ImageSource = "{StaticResource xxxx}" Stretch="None"/>

    こんどは

    「StaticResource 参照 'xxxx' が見つかりませんでした」

    というエラーになります。

    XAML でリソースの画像を Window.Background に設定するにはどうしたらよろしいでしょうか?


    ひらぽん http://d.hatena.ne.jp/hilapon/
    2010年5月17日 2:21
    モデレータ

回答

  • ビルドアクションを Resource にし、プロジェクトルートから見た相対パスを直接 ImageSource に指定して下さい。

    プロジェクト直下に hoge.png があるなら ImageSource="hoge.png"、プロジェクトの下に Resources フォルダを作ってそこに piyo.jpg があるなら ImageSource="Resources/piyo.jpg" てな感じ。

    StaticResource は、<XXX.Resources> 要素内で宣言した要素のうちの x:Key が一致する物を検索します。XXX は、Application とか Window とかですね。

    2010年5月17日 3:27

すべての返信

  • ビルドアクションを Resource にし、プロジェクトルートから見た相対パスを直接 ImageSource に指定して下さい。

    プロジェクト直下に hoge.png があるなら ImageSource="hoge.png"、プロジェクトの下に Resources フォルダを作ってそこに piyo.jpg があるなら ImageSource="Resources/piyo.jpg" てな感じ。

    StaticResource は、<XXX.Resources> 要素内で宣言した要素のうちの x:Key が一致する物を検索します。XXX は、Application とか Window とかですね。

    2010年5月17日 3:27
  • ありがとうございます。表示に成功しました。<(_ _)>
    ただし実行時は問題なく表示されますが、デザイナは相変わらず 「読み込みで問題が起きました」 と表示され、エラー一覧には

    「ファイル Resources/xxxx.gif はプロジェクトの一部ではないか、'Build Action' プロパティが 'Resource' に設定されていません」

    と出ておりますが、これは仕方ないのでしょうか?それとも 2010 なら大丈夫?

    ちなみに環境は Windows XP SP3/VisualStudio 2008 SP1/.NET Framework 3.5 SP1 です。


    ひらぽん http://d.hatena.ne.jp/hilapon/
    2010年5月17日 5:27
    モデレータ
  • 失礼しました!!いったん xaml ファイルを閉じて開き直さないと駄目なのですね!><

    ちゃんと表示できたので、この問題は解決しました。ありがとうございました。<(_ _;)>

     


    ひらぽん http://d.hatena.ne.jp/hilapon/
    2010年5月17日 5:42
    モデレータ