自分だけのクイズを作成しよう - Quipha
スポンサーリンク

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

C#

当サイトではアフィリエイト広告を利用しています。

スポンサーリンク

はじめに

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

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

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

他にも私のブログで、C#について解説している記事がありますのでご覧ください。

実装

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にドラッグ・アンド・ドロップで画像を表示する実装をしてみました。

お疲れさまでした。

他にも私のブログで、C#について解説している記事がありますのでご覧ください。

\オススメ/
C#OSWindowsプログラミング
スポンサーリンク
この記事を共有
千草をフォローする
管理人

現役のITエンジニア。
気ままにコードや技術情報をまとめています。
Webアプリ/Windows・Macアプリ/モバイルアプリ/機械学習やIoT他。
(Java, PHP, Javascript, Swift, Python, C#, 他)
個人開発:Clibor, Quipha, TXT-Crypter
Kindle本: Laravel9 実践入門, 他

千草をフォローする

個人開発

Cliborはシンプルで高機能なクリップボード履歴ソフトです。
Mac版も公開しています。

自分だけの問題集や問題を作成し、クイズを行い学習に活用しましょう。

簡単にテキストを暗号・復号でき、秘密情報を守ります。

便利なツールを公開しています。
是非、活用してください!

コメント

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