リソース

スポンサーリンク

リソース

作例:画像の埋め込み

2.6 節 と同じプログラムを作ります。
ただし,今回は画像ファイルをリソースとして実行ファイルに埋め込んでみます。

作例

コード

using System;
using System.Drawing;
using System.Windows.Forms;

class Program
{
    [STAThread]
    static void Main()
    {
        Application.Run(new Form1());
    }
}

class Form1 : Form
{
    Bitmap backgroundImage;

    public Form1()
    {
        // プロジェクト名 Project1,リソース名 Image1 の場合
        backgroundImage = Project1.Properties.Resources.Image1;

        this.BackgroundImage = backgroundImage;
        this.BackgroundImageLayout = ImageLayout.Tile;
    }
}

tile.png としてこのイメージファイルを使用しました。ご自由にダウンロードして使ってください。
作例

解説

アプリケーションが使用する画像などのデータをリソース (resource) と呼びます。
ここでは特に,実行ファイルに埋め込まれるデータのことをリソースと呼んでいます。
(リソースという言葉は他にもいろいろな意味で使われます。)

作例

右図のように「Resources.resx」が存在しますか?
このファイルがない場合は,補足 1 の手順をまず踏んでください。

この「Resources.resx」は,リソースファイルといいます。
リソースファイルを編集することで,画像ファイルをリソースとして埋め込んだり,アイコンを埋め込んだりすることができます。
「Resources.resx」をダブルクリックすると,リソースファイルの編集画面に移ります。

作例 リソースファイルの編集画面です。
(左図は文字列を編集中の画面。)
作例 イメージを扱う際には,図のように [イメージ] を選択します。
アイコンを扱うのであれば [アイコン] を,オーディオ扱うのであれば [オーディオ] を選べば OK です。
作例 [リソースの追加] - [既存のファイルの追加] を選択します。
作例 リソースとして取り込みたいファイルを選択し,[OK] を押します。
作例 リソース項目を選択した状態で F2 キーを押すと,リソースの名称を変更できます。

作例

リソースを扱うプログラムでは,プロジェクトの名前空間名とリソース名が重要になります。
右図の例では,プロジェクト名「Project1」がデフォルトの名前空間名となります。

リソースにアクセスするには,次のような表式を使います。

名前空間名.Properties.Resources.リソース名

今回のサンプルプログラムでは,プロジェクト名が「Project1」,リソース名が「Image1」であるので,Project1.Properties.Resources.Image1 と書いてリソースにアクセスしています。

ビルドして出来た実行ファイルは,画像がリソースとして埋め込まれている分,サイズが大きくなっているはずです。
ファイルをリソースとして埋め込む場合と埋め込まない場合とでファイルサイズを比べてみてください。

補足:Resource.resx が存在しない場合

Resource.resx を生成するには,次のように操作します。

作例 [プロジェクト] - [(プロジェクト名) のプロパティ] を開きます。
作例 [リソース] のタブを開きます。

「このプロジェクトには既定のリソースファイルが含まれていません。ファイルを作成するには,ここをクリックしてください。」という表示がある場合には,そのリンクをクリックします。
作例 左図のような表示になっていれば,この時点で Resource.resx は生成されています。

※ 開発環境として Visual Studio C# 2010 Express を想定して書いていますが,違うエディションやバージョンでもだいたい同じような操作をすれば大丈夫です。

アイコン

作例:アイコンの設定

タイトルバーのアイコンを設定します。

作例

さらに,実行ファイルのアイコンを設定します。

作例

この図のプログラムに使用しているアイコンは こちら です。

コード

using System;
using System.Drawing;
using System.Windows.Forms;

class Program
{
    [STAThread]
    static void Main()
    {
        Application.Run(new Form1());
    }
}

class Form1 : Form
{
    public Form1()
    {
        // プロジェクト名 Project1,リソース名 Icon1 の場合
        Icon icon = Project1.Properties.Resources.Icon1;

        this.Icon = icon;  // フォームのアイコンを設定
}

アイコンは,当サイトのファビコンでよければ こちら (favicon.ico) をダウンロードして使ってください。

解説

この作例では,リソースとして取り込んだアイコンファイルを Project1.Properties.Resources.Icon1 で参照しています。
ファイルをリソースとして取り込む方法については 7.1 節 を参照してください。

アイコンファイルを取り扱うためのクラスに Icon クラスがあります。

System.Drawing 名前空間
Icon クラス [MSDN]

アイコンを表現します。

フォームにアイコンを設定するには,Icon プロパティにアイコンを登録します。

System.Windows.Forms 名前空間
Form クラス [MSDN]

プロパティ

項目説明
Icon Iconアイコン
bool ShowIconアイコンを表示する

実行ファイルのアイコンを設定するには,次のように操作します。

※ 開発環境として Visual Studio C# 2010 Express を想定して書いていますが,違うエディションやバージョンでもだいたい同じような操作をすれば大丈夫です。

アイコンの設定-1 [プロジェクト] - [(プロジェクト名) のプロパティ] を開きます。
アイコンの設定-2 [アプリケーション] タブを開きます。

[アイコンとマニフェスト] 欄の中の [アイコン] 欄の右にある [...] ボタンを押して,設定したいアイコンファイルを開いてください。
アイコンの設定-3 左図のように,指定したアイコンのプレビューが右端に表示されれば設定完了です。

これだけ! 簡単!

## アイコン (実行ファイル) {#item-85} ### 作例:実行ファイルのアイコンの設定

実行ファイルのアイコンを設定します。

作例

この図のプログラムに使用しているアイコンは こちら です。

### 手順

実行ファイルのアイコンを設定するには,次のように操作します。

※ 開発環境として Visual Studio C# 2010 Express を想定して書いていますが,違うエディションやバージョンでもだいたい同じような操作をすれば大丈夫です。

アイコンの設定-1 [プロジェクト] - [(プロジェクト名) のプロパティ] を開きます。
アイコンの設定-2 [アプリケーション] タブを開きます。

[アイコンとマニフェスト] 欄の中の [アイコン] 欄の右にある [...] ボタンを押して,設定したいアイコンファイルを開いてください。
アイコンの設定-3 左図のように,指定したアイコンのプレビューが右端に表示されれば設定完了です。

これだけ! 簡単!

タイトルバーに表示されるアイコンを変更する方法については 7.2 節 を参照してください。

サウンド

作例:Wave サウンドプレーヤ

作例は Wave ファイルを再生できる簡素なサウンドプレーヤです。

作例

コード

using System;
using System.Drawing;
using System.Windows.Forms;

class Program
{
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.Run(new Form1());
    }
}

class Form1 : Form
{
    Button buttonPlay;  // '再生' ボタン
    Button buttonStop;  // '停止' ボタン
    SoundPlayer soundPlayer;  // サウンドプレーヤ

    public Form1()
    {
        soundPlayer = new System.Media.SoundPlayer();
        soundPlayer.SoundLocation = @"C:\test\sound.wav";

        soundPlayer.Load();  // サウンドファイルをロード

        buttonPlay = new Button()
        {
            Location = new Point(20, 20),
            Text = "再生",
        };
        buttonPlay.Click += new EventHandler(buttonPlay_Click);

        buttonStop = new Button()
        {
            Location = new Point(100, 20),
            Text = "停止",
        };
        buttonStop.Click += new EventHandler(buttonStop_Click);

        this.Controls.AddRange(new Control[]
        {
            buttonPlay, buttonStop
        });
    }

    void buttonPlay_Click(object sender, EventArgs e)
    {
        soundPlayer.Play();  // 再生
    }

    void buttonStop_Click(object sender, EventArgs e)
    {
        soundPlayer.Stop();  // 停止
    }
}

解説

Wave サウンドファイルを再生するだけでいいなら,SoundPlayer が利用できます。
使い方は非常に簡単です。

System.Media 名前空間
SoundPlayer クラス [MSDN]

Wave サウンドプレーヤを表現します。

プロパティ

項目説明
string SoundLocationファイルへのパス

SoundPlayer コンストラクタ

void SoundPlayer()
void SoundPlayer(
    string soundLocation // Wave ファイルへのパス
)

Load メソッド

サウンドを読み込みます。

void Load()

Play メソッド

サウンドを再生します。

void Play()

PlayLooping メソッド

サウンドを繰り返し再生します。

void PlayLooping()

PlaySync メソッド

サウンドを再生します。ただし,再生中は待機状態となります。

void PlaySync()

Stop メソッド

サウンドの再生を中断します。

void Stop()

おまけ:システムサウンド

ついでにシステムサウンドを鳴らす簡単なプログラムも紹介しておきます (コンソールプログラム)。

class Program
{
    static void Main()
    {
        System.Media.SystemSounds.Asterisk.Play();
    }
}

System.Media 名前空間
SystemSounds クラス [MSDN]

システムサウンドを提供します。

プロパティ

項目説明
(static) SystemSound Asterisk情報
(static) SystemSound Beep一般の警告音
(static) SystemSound Exclamation警告
(static) SystemSound Handエラー
(static) SystemSound Question問合せ

System.Media 名前空間
SystemSound クラス [MSDN]

システムサウンドを表現します。

Play メソッド

サウンドを再生します。

void Play()

サウンド

作例:サウンドの埋め込み

7.4 節 と同じですが,リソースとして取り込んだサウンドを扱っています。

作例

コード

using System;
using System.Drawing;
using System.Windows.Forms;

class Program
{
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.Run(new Form1());
    }
}

class Form1 : Form
{
    Button buttonPlay;  // '再生' ボタン
    Button buttonStop;  // '停止' ボタン
    SoundPlayer soundPlayer;  // サウンドプレーヤ

    public Form1()
    {
        buttonPlay = new Button()
        {
            Location = new Point(20, 20),
            Text = "再生",
        };
        buttonPlay.Click += new EventHandler(buttonPlay_Click);

        buttonStop = new Button()
        {
            Location = new Point(100, 20),
            Text = "停止",
        };
        buttonStop.Click += new EventHandler(buttonStop_Click);

        // プロジェクト名 Project1,リソース名 Audio1 の場合
        System.IO.Stream stream = Project1.Properties.Resources.Audio1;

        soundPlayer = new System.Media.SoundPlayer();
        soundPlayer.Stream = stream;
        soundPlayer.Load();

        this.Controls.AddRange(new Control[]
        {
            buttonPlay, buttonStop
        });
    }

    void buttonPlay_Click(object sender, EventArgs e)
    {
        soundPlayer.Play();
    }

    void buttonStop_Click(object sender, EventArgs e)
    {
        soundPlayer.Stop();
    }
}

解説

ファイルをリソースとして取り込む方法については 7.1 節 を参照してください。
SoundPlayer については 6.12 節 でも紹介しています。

System.Media 名前空間
SoundPlayer クラス [MSDN]

Wave サウンドプレーヤを表現します。

プロパティ

項目説明
Stream streamファイルへのストリーム

SoundPlayer コンストラクタ

void SoundPlayer()
void SoundPlayer(
    Stream stream // ストリーム
)

Load メソッド

サウンドを読み込みます。

void Load()

Play メソッド

サウンドを再生します。

void Play()

PlayLooping メソッド

サウンドを繰り返し再生します。

void PlayLooping()

PlaySync メソッド

サウンドを再生します。ただし,再生中は待機状態となります。

void PlaySync()

Stop メソッド

サウンドの再生を中断します。

void Stop()

テキスト

作例:テキストリソース

リソースとして埋め込んだリソースを使ってメッセージを表示しています。

作例

コード

using System;
using System.Drawing;
using System.Windows.Forms;

class Program
{
    [STAThread]
    static void Main()
    {
        // プロジェクト名 Projec1,リソース名 String1,String2 の場合
        string str1 = Project1.Properties.Resources.String1;
        string str2 = Project1.Properties.Resources.String2;

        MessageBox.Show(str1, str2);
    }
}

解説

ソリューションエクスプローラ

リソースには,イメージやオーディオだけでなく,テキストも含めることができます。

右図のリソースファイル「Resources.resx」をダブルクリックすれば,下図のような編集画面が開きます。
[文字列] の編集モードを選択して,図のようにテキストを編集してください。

リソースの編集

String1,String2 が,Project1.Properties.Resources.String1 のようにしてプログラムから参照できる名前になります。
プログラム実行時に,対応する値に置き換えられます。
コメントはプログラムに影響しないので自由に付けてください。

テキストをリソース化する利点は,ローカライズが容易になるというところにあります。
多言語対応のプログラムの作り方については 10.2 節 で説明しています。

補足:Resource.resx が存在しない場合

Resource.resx を生成するには,次のように操作します。

作例 [プロジェクト] - [(プロジェクト名) のプロパティ] を開きます。
作例 [リソース] のタブを開きます。

「このプロジェクトには既定のリソースファイルが含まれていません。ファイルを作成するには,ここをクリックしてください。」という表示がある場合には,そのリンクをクリックします。
作例 左図のような表示になっていれば,この時点で Resource.resx は生成されています。

※ 開発環境として Visual Studio C# 2010 Express を想定して書いていますが,違うエディションやバージョンでもだいたい同じような操作をすれば大丈夫です。

スポンサーリンク