A szükséges műveletek elvégzésében az IDataObject interfész lesz segítségünkre. Egy ilyen objektumot ad vissza például a Clipboard osztály GetDataObject statikus függvénye.
private void button1_Click(object sender, System.EventArgs e)
{
IDataObject ido = Clipboard.GetDataObject();
Ha adott az IDataObject objektuma, akkor már viszonylag egyszerűen meghatározhatjuk, hogy milyen típusú adat helyezkedik el aktuálisan a vágólapon.
Ehhez a GetFormats függvényt használhatjuk. Itt egy sztringeket tartalmazó tömböt kapunk visszatérési értékként. A tömb minden egyes eleme egy-egy meghatározása az adott formátumnak. Például, ha egy bitmap-et helyezünk vágólapra, akkor a következő sztringeket kapjuk: Bitmap, DeviceIndependentBitmap, Format17.
Ha a GetFormats logikai paraméterének igaz értéket adunk, akkor ezzel azt érjük el, hogy fenti lista kiegészül még azokkal az elemekkel is, melyre a vágólapon lévő objektum automatikusan konvertálható a programunkon belül. A bitmap-nél maradva, ekkor a tömbbe még a System.Drawing.Bitmap elem is megjelenik.
listBox1.Items.Clear();
listBox1.Items.AddRange(ido.GetFormats(checkBox1.Checked));
}
Nézzük most azt, hogy miként tudjuk felhasználni programunkban egy a vágólapon elhelyezkedő képet.
Első lépésként ismét csak a Clipboard GetDataObject függvényével kérünk egy IDataObject interfészt.
private void button2_Click(object sender, System.EventArgs e)
{
IDataObject ido = Clipboard.GetDataObject();
Ellenőriznünk kell, hogy tényleg kép van-e aktuálisan a vágólapon, különben hiba lenne programunk futása során.
if (ido.GetDataPresent(DataFormats.Bitmap))
{
Ha kép van, akkor azt egyszerűen megjeleníthetjük egy PictureBox kontrollon. Ehhez csak a GetData függvényt kell felhasználni, ahol paraméterként megadhatjuk, hogy milyen formátumban szeretnénk viszontlátni az adatot. A visszatérési érték object típusú lesz.
pictureBox1.SizeMode = PictureBoxSizeMode.AutoSize;
pictureBox1.Image = (Image)ido.GetData(DataFormats.Bitmap);
}
}
Ha már adott egy kép a PictureBox-ban, akkor tegyük meg azt, hogy tükrözzük, és az új képet visszahelyezzük a vágólapra.
private void button3_Click(object sender, System.EventArgs e)
{
pictureBox1.Image.RotateFlip(RotateFlipType.Rotate180FlipX);
Ehhez a Clipboard SetDataObject függvényét használhatjuk, melynek paraméterként a vágólapon elhelyezendő képet kell megadnunk.
Clipboard.SetDataObject(pictureBox1.Image);
}