.NETアプリでよくあるので「実行ファイル.config」にデータを保存してあって、わざわざ自前の設定ファイルを作らないっていうのがあるわよね。あれをやってみるわ。
とりあえず、マニュアルで登録しましょう。
(VS頼りでなくxamlにリソース定義する方法もあるけど、それはまた別の話で)
Visual Studio(2010や2013あたりならたぶん共通)のソリューションエクスプローラーで『Settings.settings』っていうのをダブルクリックすると、以下のようなのが開くわよね?ここに値を登録するの。うちは壁紙を貼る事にしたから、wallpaperって名前にしたわ。ファイル名をフルパスで入れるから、型はもちろん string(文字列) ね。
#ref(): File not found: "settings.jpg" at page "プロパティに保存したデータを使う"
これにアクセスする方法は、以下のように書くの。
Properties.Settings.Default.wallpaper;
プロパティだから起動時は自動で読み込まれるけど、保存はそうはいかない。明示的にやらないとね。
保存するには、以下のようにするの。
Properties.Settings.Default.Save();
さて、それじゃあ実際に読み込んで使ってみましょう。壁紙だから起動時に貼り付けましょうか。
まず、絵を貼り付けるカンバスを MainWindow.xaml に設定しましょう。
<Window x:Class="clock2.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="350" Width="525"> <Canvas x:Name="a1"> <Canvas.Background> <ImageBrush x:Name="ibb" Opacity="0.8" /> </Canvas.Background> </Canvas> </Window>
それで、実際に画像を貼り付けるコード。
private static string wallpaper = ""; private BitmapImage b_ima = null; public MainWindow() { InitializeComponent(); wallpaper = Properties.Settings.Default.wallpaper; if (File.Exists(wallpaper) == true) { // 記録通りに壁紙を貼る b_ima = new BitmapImage(); b_ima.BeginInit(); b_ima.UriSource = new Uri(wallpaper); b_ima.EndInit(); ibb.ImageSource = b_ima; ibb.Stretch = Stretch.Uniform; } }
で、実行結果。うまくいったかしら?
#ref(): File not found: "shot-wall.png" at page "プロパティに保存したデータを使う"
あと、画像のかわいい生き物が何かについての情報はこっちね。