图像的拷贝和粘贴

1.使用剪贴板拷贝和粘贴图像

剪贴板是在Windwos系统中单独预留出来的一块内存,它用来暂时存放在Windwos应用程序间要交换的数据,使用剪贴板对象可以轻松实现应用程序间的数据交换,这些数据包括图像或文本。在C#中,剪贴板通过Clipboard类来实现,Clipboard类的常用方法如表7.10所示。

表7.10 Clipboard类常用方法

名称

说明

Clear

从剪贴板中移除所有数据。

ContainsData

指示剪贴板中是否存在指定格式的数据,或可转换成此格式的数据。

ContainsImage

指示剪贴板中是否存在 Bitmap 格式或可转换成此格式的数据。

ContainsText

已重载。指示剪贴板中是否存在文本数据。

GetData

从剪贴板中检索指定格式的数据。

GetDataObject

检索当前位于系统剪贴板中的数据。

GetFileDropList

从剪贴板中检索文件名的集合。

GetImage

检索剪贴板上的图像。

GetText

已重载。从剪贴板中检索文本数据。

SetAudio

已重载。将WaveAudio格式的数据添加到剪贴板中。

SetData

将指定格式的数据添加到剪贴板中。

SetDataObject

已重载。将数据置于系统剪贴板中。

SetImage

将Bitmap格式的Image添加到剪贴板中。

SetText

已重载。将文本数据添加到剪贴板中。

剪贴板的使用主要有一下两个步骤:

l         将数据置于剪贴板中。

l         从剪贴板中检索数据。

下面简要介绍剪贴板的使用。

(1)将数据置于剪贴板中

可以通过SetDataObject方法将数据置于剪贴板中,SetDataObject方法有以下三种形式的定义:

l      Clipboard.SetDataObject(Object):将非持久性数据置于系统剪贴板中。由.NET Compact Framework支持。

l      Clipboard.SetDataObject(Object,Boolean):将数据置于系统剪贴板中,并指定在退出应用程序后是否将数据保留在剪贴板中。

l         Clboard.SetDataObject(Object,Boolean,Int32,Int32):尝试指定的次数,以将数据置于系统剪贴板中,且两次尝试之间具有指定的延迟,可以选择在退出应用程序后将数据保留在剪贴板中。

将字符串置于剪贴板中的语句如下所示:

string str = "Mahesh writing data to the Clipboard";

Clipboard.SetDataObject(str)

(2)从剪贴板中检索数据

       可以通过GetDataObject方法从剪贴板中检索数据,它将返回IdataObject,其定义如下:

public static IDataObject GetDataObject();

首先使用IdataObject对象的GetDataPresent方法检测剪贴板上存放的是什么类型的数据,然后是使用IdataObject对象的GetData方法获取剪贴板上相应的数据类型的数据。下面使用GetDataObject方法从剪贴板中检索出字符串数据。

例如:

IDataObject iData = Clipboard.GetDataObject();

    if (iData.GetDataPresent(DataFormats.Text))

    {

 string str =(String)iData.GetData(DataFormats.Text);

}

【例7.8】使用剪贴板拷贝和粘贴图像。

(1)建立如图7.18所示的窗体。在窗体上天加两个图片框控件和两个命令按钮控件。利用第一个图片框的属性窗口为其输入图像。

(2)双击【复制】命令按钮,输入如下代码,将图像置于剪贴板中。

private void button1_Click(object sender, EventArgs e)

       {

          Clipboard.SetDataObject(pictureBox1.Image);

       }

(3)双击【粘贴】命令按钮,输入如下代码,从剪贴板中检索出图像,并显示于第二个图片框中。

private void button2_Click(object sender, EventArgs e)

      {

          IDataObject iData = Clipboard.GetDataObject();

          if (iData.GetDataPresent(DataFormats.Bitmap))

          {

pictureBox2.Image = (Bitmap)iData.GetData

(DataFormats.Bitmap);

           }

}

(4)运行程序,首先单击【复制】命令按钮,然后单击【粘贴】命令按钮,运行结果如图7.19所示。

 

 

posted on 2012-07-26 18:01  流星落  阅读(596)  评论(0编辑  收藏  举报

导航