自分だけのクイズ作成 - Quipha公開中

【C#】PictureBoxにドラッグ・アンド・ドロップで画像を表示

C#
スポンサーリンク

はじめに

今回は、C#でPictureBoxにドラッグ・アンド・ドロップで画像を表示する実装をしてみました。

環境
  • Visual Studio 2019
  • C#
  • Windows 10

Visual Studioのセットアップや、プロジェクトの新規作成は以下の記事を参考にしてください。

実装

PictureBox配置

まずは、フォームにPictureBoxを配置します。

ドラッグする領域を分かりやすくする為に、枠線を表示します。
PictureBoxのBorderStyleFixedSingleを指定します。

PictureBoxの画像の表示の仕方については、画像の縦横比は変更せず、枠内にピッタリ表示するようにします。
PictureBoxのSizeModeZoomを指定します。

フォームには、枠線がついたPictureBoxが配置されました。

PictureBox ドラッグイベント

コンストラクタに処理を追加します。
PictureBoxにドラッグ・アンド・ドロップを許可します。

public Form1()
{
    InitializeComponent();

    // ドロップを許可
    pictureBox1.AllowDrop = true;
}

PictureBoxのDragDropイベントと、DragEnterイベントを実装します。

PictureBoxにドラッグされたイベントを実装します。
ここでは、ドラッグされた際に、マウスカーソルの形を変更しています。

/// <summary>
/// PictureBox ドラッグイベント
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void pictureBox1_DragEnter(object sender, DragEventArgs e)
{
    if (e.Data.GetDataPresent(DataFormats.FileDrop))
    {
        e.Effect = DragDropEffects.All;
    }
    else
    {
        e.Effect = DragDropEffects.None;
    }
}

PictureBoxに写真ファイルをドラッグしてみましょう。
マウスカーソルに変わるのが確認できます。

PictureBoxの領域外の場合は、ドラッグできないアイコンになります。

PictureBox ドロップイベント

画像をドロップされたイベントを実装します。
実際に、複数のファイルをドロップすることができますが、今回はPictureBoxに表示したいので、1個目の画像を表示するようにしました。

/// <summary>
/// PictureBox ドロップイベント
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void pictureBox1_DragDrop(object sender, DragEventArgs e)
{
    // ドラッグされたファイルのパスを取得
    string[] fileName = (string[])e.Data.GetData(DataFormats.FileDrop);
    // 複数の場合、1個目の画像を表示
    pictureBox1.ImageLocation = fileName[0];          
}

動作確認

それではアプリケーションを実行してみましょう。
PictureBoxに写真をドラッグ・アンド・ドロップします。

画像が表示されました。
画像の縦横比は変わらずに、枠内に収まるように表示されます。
画像をドラッグ・アンド・ドロップする度に、きちんと画像が表示されます。

ちなみに、画像以外のファイルをドラッグ・アンド・ドロップすると、以下のような表示になります。

さいごに

今回は、PictureBoxにドラッグ・アンド・ドロップで画像を表示する実装をしてみました。

お疲れさまでした。

コメント

タイトルとURLをコピーしました