[Tips][PictureBox] クリップボードの画像を表示する

クリップボードの画像をPictureBoxに表示するには、クリップボードの画像をBMP形式にキャストして、Imageプロパティにセットします。

下記はグリップボードの画像をPictureBoxに表示する例です。
[クリップボードの画像を表示]ボタンがクリックされると、現在クリップボードにある画像をBMP形式に変換して表示します。

VBの例

' [クリップボードの画像を表示]ボタンクリック時の処理
Private Sub btnShowClipboard_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnShowClipboard.Click
    'イメージの表示方法を設定(サイズ比率を維持したまま拡大/縮小)
    PictureBox1.SizeMode = PictureBoxSizeMode.Zoom

    '★★★クリップボードの画像をPictureBoxに表示する★★★
    PictureBox1.Image = DirectCast(Clipboard.GetDataObject().GetData(DataFormats.Bitmap), Bitmap)
End Sub

C#の例

// [クリップボードの画像を表示]ボタンクリック時の処理
private void btnShowClipboard_Click(object sender, EventArgs e)
{
    // イメージの表示方法を設定(サイズ比率を維持したまま拡大/縮小)
    pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;

    // ★★★クリップボードの画像をPictureBoxに表示する★★★
    pictureBox1.Image = (Bitmap)Clipboard.GetDataObject().GetData(DataFormats.Bitmap);
}

[Tips][PictureBox] 画像を保存する

PictureBoxに表示されている画像はImageプロパティSaveメソッドで保存することが可能です。

Saveメソッドの第1引数には保存ファイルパスを、第2引数には保存形式を指定します。

保存形式にはImageFormatクラスの値を指定します。

ImageFormatクラス
メンバ名 説明
BMP ビットマップ(BMP)形式
Emf 拡張メタファイル(EMF)形式
Exif Exif形式
Gif GIF形式
GUID このImageFormatオブジェクトを表すGuid構造体
Icon Windowsアイコンイメージ形式
Jpeg JPEG形式
MemoryBmp メモリ上のビットマップ形式
Png PNG形式
Tiff TIFF形式
Wmf Windowsメタファイル(WMF)形式

下記は、PictureBoxに表示されている画像を保存する例です。

[画像を開く]ボタンでPictureBoxに表示する画像を選択し、[画像を保存]ボタンでPictureBoxに表示されている画像を保存します。

画像の保存では、拡張子で画像の保存形式を決定しています。

サンプルの画面デザインは下記のようにしました。

VBの例

' [画像を開く]ボタンクリック時の処理
Private Sub btnOpenImage_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOpenImage.Click
    'フィルターの設定
    OpenFileDialog1.Filter = "画像ファイル|*.gif;*.jpg;*.png|すべてのファイル|*.*"

    'ファイル選択ダイアログを表示
    OpenFileDialog1.ShowDialog()
End Sub

' [開く]ボタンクリック時の処理
Private Sub OpenFileDialog1_FileOk(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles OpenFileDialog1.FileOk
    'イメージの表示方法を設定(サイズ比率を維持したまま拡大/縮小)
    PictureBox1.SizeMode = PictureBoxSizeMode.Zoom

    'PictureBoxにイメージを読み込む
    PictureBox1.Image = Image.FromFile(OpenFileDialog1.FileName)
End Sub

' [画像を保存]ボタンクリック時の処理
Private Sub btnSaveImage_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSaveImage.Click
    'フィルターの設定
    SaveFileDialog1.Filter = "GIF形式|*.gif|JPEG形式|*.jpeg|PNG形式|*.png"

    'ファイル保存ダイアログを表示
    SaveFileDialog1.ShowDialog()
End Sub

' [保存]ボタンクリック時の処理
Private Sub SaveFileDialog1_FileOk(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles SaveFileDialog1.FileOk
    Dim extension As String = IO.Path.GetExtension(SaveFileDialog1.FileName)

    Select Case extension.ToUpper
        Case ".GIF"
            '★★★PictureBoxのイメージをGIF形式で保存する★★★
            PictureBox1.Image.Save(SaveFileDialog1.FileName, Imaging.ImageFormat.Gif)
        Case ".JPEG"
            '★★★PictureBoxのイメージをJPEG形式で保存する★★★
            PictureBox1.Image.Save(SaveFileDialog1.FileName, Imaging.ImageFormat.Jpeg)
        Case ".PNG"
            '★★★PictureBoxのイメージをGIF形式で保存する★★★
            PictureBox1.Image.Save(SaveFileDialog1.FileName, Imaging.ImageFormat.Png)
    End Select
End Sub

C#の例

// [画像を開く]ボタンクリック時の処理
private void btnOpenImage_Click(object sender, EventArgs e)
{
    // フィルターの設定
    openFileDialog1.Filter = "画像ファイル|*.gif;*.jpg;*.png|すべてのファイル|*.*";

    // ファイル選択ダイアログを表示
    openFileDialog1.ShowDialog();
}

// [開く]ボタンクリック時の処理
private void openFileDialog1_FileOk(object sender, CancelEventArgs e)
{
    // イメージの表示方法を設定(サイズ比率を維持したまま拡大/縮小)
    pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;

    // PictureBoxにイメージを読み込む
    pictureBox1.Image = Image.FromFile(openFileDialog1.FileName);
}

/// [画像を保存]ボタンクリック時の処理
private void btnSaveImage_Click(object sender, EventArgs e)
{
    // フィルターの設定
    saveFileDialog1.Filter = "GIF形式|*.gif|JPEG形式|*.jpeg|PNG形式|*.png";

    // ファイル保存ダイアログを表示
    saveFileDialog1.ShowDialog();
}

// [保存]ボタンクリック時の処理
private void saveFileDialog1_FileOk(object sender, CancelEventArgs e)
{
    string extension = System.IO.Path.GetExtension(saveFileDialog1.FileName);

    switch (extension.ToUpper())
    {
        case ".GIF":
            // ★★★PictureBoxのイメージをGIF形式で保存する★★★
            pictureBox1.Image.Save(saveFileDialog1.FileName, System.Drawing.Imaging.ImageFormat.Gif);
            break;
        case ".JPEG":
            // ★★★PictureBoxのイメージをJPEG形式で保存する★★★
            pictureBox1.Image.Save(saveFileDialog1.FileName, System.Drawing.Imaging.ImageFormat.Jpeg);
            break;
        case ".PNG":
            // ★★★PictureBoxのイメージをGIF形式で保存する★★★
            pictureBox1.Image.Save(saveFileDialog1.FileName, System.Drawing.Imaging.ImageFormat.Png);
            break;
    }
}

実行例は下記の通りです。

[Tips][PictureBox] イメージを回転/反転させる

PictureBoxコントロールのImageプロパティが持つRotateFlipメソッドを使用すると、表示している画像を回転/反転させることができます。

RotateFlipメソッドにはRotateFlipType列挙体の値を指定します。

RotateFlipType列挙体
メンバ名 説明
Rotate180FlipNone 反転せずに 180 度回転する
Rotate180FlipX 180 度回転してから、水平方向に反転する
Rotate180FlipXY 180 度回転してから、水平方向と垂直方向に反転する
Rotate180FlipY 180 度回転してから、垂直方向に反転する
Rotate270FlipNone 反転せずに 270 度回転する
Rotate270FlipX 270 度回転してから、水平方向に反転する
Rotate270FlipXY 270 度回転してから、水平方向と垂直方向に反転する
Rotate270FlipY 270 度回転してから、垂直方向に反転する
Rotate90FlipNone 反転せずに 90 度回転する
Rotate90FlipX 90 度回転してから、水平方向に反転する
Rotate90FlipXY 90 度回転してから、水平方向と垂直方向に反転する
Rotate90FlipY 90 度回転してから、垂直方向に反転する
RotateNoneFlipNone 回転も反転も行わない
RotateNoneFlipX 回転せずに水平方向に反転する
RotateNoneFlipXY 回転せずに水平方向と垂直方向に反転する
RotateNoneFlipY 回転せずに垂直方向に反転する

下記は画像を回転/反転させる例です。

VBの例

' フォームロード時の処理
Private Sub Form2_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    'イメージの表示方法を設定(サイズ比率を維持したまま拡大/縮小)
    PictureBox1.SizeMode = PictureBoxSizeMode.Zoom

    'PictureBoxにイメージを読み込む
    PictureBox1.Image = Image.FromFile("Tulips.jpg")
End Sub

' 画像を上下に反転する
Private Sub btnRotateNoneFlipY_Click(sender As System.Object, e As System.EventArgs) Handles btnRotateNoneFlipY.Click
    '★★★画像を上下反転する★★★
    PictureBox1.Image.RotateFlip(RotateFlipType.RotateNoneFlipY)
    PictureBox1.Refresh()
End Sub

' 画像を左右に反転する
Private Sub btnRotateNoneFlipX_Click(sender As System.Object, e As System.EventArgs) Handles btnRotateNoneFlipX.Click
    '★★★画像を左右反転する★★★
    PictureBox1.Image.RotateFlip(RotateFlipType.RotateNoneFlipX)
    PictureBox1.Refresh()
End Sub

' 90度回転する
Private Sub btnRotate90FlipNone_Click(sender As System.Object, e As System.EventArgs) Handles btnRotate90FlipNone.Click
    '★★★画像を90度回転する★★★
    PictureBox1.Image.RotateFlip(RotateFlipType.Rotate90FlipNone)
    PictureBox1.Refresh()
End Sub

C#の例

// フォームロード時の処理
private void Form2_Load(object sender, EventArgs e)
{
    // イメージの表示方法を設定(サイズ比率を維持したまま拡大/縮小)
    pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;

    // PictureBoxにイメージを読み込む
    pictureBox1.Image = Image.FromFile("Tulips.jpg");
}

// 画像を上下に反転する
private void btnRotateNoneFlipY_Click(object sender, EventArgs e)
{
    // ★★★画像を上下反転する★★★
    pictureBox1.Image.RotateFlip(RotateFlipType.RotateNoneFlipY);
    pictureBox1.Refresh();
}

// 画像を左右に反転する
private void btnRotateNoneFlipX_Click(object sender, EventArgs e)
{
    // ★★★画像を左右反転する★★★
    pictureBox1.Image.RotateFlip(RotateFlipType.RotateNoneFlipX);
    pictureBox1.Refresh();
}

// ★★★画像を90度回転する★★★
private void btnRotate90FlipNone_Click(object sender, EventArgs e)
{
    // 画像を90度回転する
    pictureBox1.Image.RotateFlip(RotateFlipType.Rotate90FlipNone);
    pictureBox1.Refresh();
}