クリップボードへ画像データ(ビットマップデータ)をコピーするコードを紹介します。
クリップボードに文字列をコピーするには、Clipboard.SetData()
メソッドを利用します。
Clipboard.SetData(DataFormats.Bitmap, [クリップボードにコピーするデータ]);
テキストをクリップボードにコピーする場合は、SetDataの第一引数に DataFormats.Bitmap
を与えます。
以下のUIを作成します。ButtonとPaintBoxを配置します。
以下のコードを記述します。実質button2のClickイベントを実装します。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace SetClipBoard
{
public partial class FormMain : Form
{
public FormMain()
{
InitializeComponent();
}
private void button2_Click(object sender, EventArgs e)
{
Bitmap bmp = new Bitmap(pictureBox1.Image);
Clipboard.SetData(DataFormats.Bitmap, bmp);
}
}
}
private void button2_Click(object sender, EventArgs e)
{
Bitmap bmp = new Bitmap(pictureBox1.Image);
Clipboard.SetData(DataFormats.Bitmap, bmp);
}
Bitmapクラスのインスタンスを作成します。Bitmapクラスのコンストラクタの引数にPictureBoxのImageプロパティを与えることでPictureBoxに設定されている画像からBitmapクラスのオブジェクトを作成できます。
ClipboardクラスのSetDataメソッドを呼び出し画像をクリップボードにコピーします。今回クリップボードに設定するデータは画像のため、第一引数のフォーマット形式はDataFormats.Bitmapとします。第二引数の設定するデータはBitmapクラスのオブジェクトを与えます。
プロジェクトを実行します。下図のウィンドウが表示されます。
button2をクリックします。pictureBox1の画像がクリップボードにコピーされます。"ペイント"を起動し、[貼り付け]メニューを選択するとpictureBox1に表示されていた画像がペイントのキャンバスに貼り付けられます。