图像的拷贝和粘贴
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所示。