クリップボードにあるイメージデータは、Clipboard.GetImageメソッドで取得できます。このメソッドは、.NET Framework 2.0以降で使用できます。
次のコードは、クリップボード内の画像をピクチャボックス"PictureBox1"に表示する例です。ここでは「PictureBoxコントロールに簡単に画像を表示する」方法で画像を表示しています。
'Imports System.Drawing 'Imports System.Windows.Forms 'クリップボードにBitmapデータがあるか調べる(調べなくても良い) If Clipboard.ContainsImage() Then 'クリップボードにあるデータの取得 Dim img As Image = Clipboard.GetImage() If img IsNot Nothing Then 'データが取得できたときは表示する PictureBox1.Image = img End If End If
//using System.Drawing; //using System.Windows.Forms; //クリップボードにBitmapデータがあるか調べる(調べなくても良い) if (Clipboard.ContainsImage()) { //クリップボードにあるデータの取得 Image img = Clipboard.GetImage(); if (img != null) { //データが取得できたときは表示する PictureBox1.Image = img; } }
補足:VB.NETでは、My.Computer.Clipboard.GetImageメソッドを使っても同じことができます。
.NET Framework 1.1以前では、Clipboard.GetDataObjectメソッド、及びIDataObject.GetDataメソッドにより取得できます。
以下に例を示します。
'Imports System.Drawing 'Imports System.Windows.Forms 'クリップボードにあるデータの取得 Dim d As IDataObject = Clipboard.GetDataObject() 'クリップボードにデータがあるか確認 If Not d Is Nothing Then 'ビットマップデータ形式に関連付けられているデータを取得 Dim img As Image = DirectCast(d.GetData(DataFormats.Bitmap), Image) If Not img Is Nothing Then 'データが取得できたときは表示する PictureBox1.Image = img End If End If
//using System.Drawing; //using System.Windows.Forms; //クリップボードにあるデータの取得 IDataObject d = Clipboard.GetDataObject(); //クリップボードにデータがあるか確認 if (d != null) { //ビットマップデータ形式に関連付けられているデータを取得 Image img = (Image)d.GetData(DataFormats.Bitmap); if (img != null) { //データが取得できたときは表示する PictureBox1.Image = img; } }
Clipboard.SetImageメソッドを使えば、簡単に画像をクリップボードへコピーできます。このメソッドは、.NET Framework 2.0以降で使用できます。
下の例では、画像ファイルを読み込み、そのデータをクリップボードにコピーしています。
'Imports System.Drawing 'Imports System.Windows.Forms '画像を作成する Dim bmp As New Bitmap("C:\test.bmp") '画像データをクリップボードにコピーする Clipboard.SetImage(bmp) '後片付け bmp.Dispose()
//using System.Drawing; //using System.Windows.Forms; //画像を作成する Bitmap bmp = new Bitmap("C:\\test.bmp"); //画像データをクリップボードにコピーする Clipboard.SetImage(bmp); //後片付け bmp.Dispose();
ただしこの方法では、アプリケーションが終了してもクリップボードからデータは削除されません。削除されるようにする方法は、次をご覧下さい。
補足:VB.NETでは、My.Computer.Clipboard.SetImageメソッドを使っても同じことができます。
.NET Framework 1.1以前では、Clipboard.SetDataObjectメソッドを使って画像をクリップボードへコピーできます。
'Imports System.Drawing 'Imports System.Windows.Forms '画像を作成する Dim bmp As New Bitmap("C:\test.bmp") '画像データをクリップボードにコピーする Clipboard.SetDataObject(bmp, True) '後片付け bmp.Dispose()
//using System.Drawing; //using System.Windows.Forms; //画像を作成する Bitmap bmp = new Bitmap("C:\\test.bmp"); //画像データをクリップボードにコピーする Clipboard.SetDataObject(bmp, true); //後片付け bmp.Dispose();
上記の例では、SetDataObjectメソッドの2番目のパラメータにtrueを指定しましたので、アプリケーションが終了してもデータはクリップボードから削除されずに残ります。次の例のように、2番目のパラメータを指定せずに(あるいはfalseを指定して)、アプリケーションが終了したらデータがクリップボードから削除されるようにすることもできます。しかしこの場合は、コピーした画像データがDisposeメソッドで破棄されると、データを正しく取り出せなくなります。
'Imports System.Drawing 'Imports System.Windows.Forms '画像を作成する Dim bmp As New Bitmap("C:\test.bmp") '画像データをクリップボードにコピーする Clipboard.SetDataObject(bmp)
//using System.Drawing; //using System.Windows.Forms; //画像を作成する Bitmap bmp = new Bitmap("C:\\test.bmp"); //画像データをクリップボードにコピーする Clipboard.SetDataObject(bmp);
クリップボードをクリアする方法は、「クリップボードをクリアする」で説明しています。
注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。