# aardio 范例: 剪贴板图像

```aardio
//剪贴板图像
import win.ui;
/*DSG{{*/
var winform = win.form(text="aardio form";right=637;bottom=450;)
winform.add(
btnRead={cls="button";text="读取剪贴板图像";left=249;top=379;right=404;bottom=419;db=1;dr=1;z=3};
btnWrite={cls="button";text="截屏并写入剪贴板";left=428;top=379;right=598;bottom=419;db=1;dr=1;z=2};
picturebox={cls="plus";left=21;top=16;right=617;bottom=360;db=1;dl=1;dr=1;dt=1;edge=1;repeat="scale";transparent=1;z=1}
)
/*}}*/

import win.clip;
import process.imageView;
import gdip.bitmap;

winform.btnRead.oncommand = function(id,event){
	var hBmp = win.clip.readBitmap()
	if(!hBmp){
		return winform.msgboxErr("剪贴板没有图像");
	}
	
	//存为图像文件
	com.picture.fromBitmap(hBmp).Save("/clip.jpg")
	
	//转换为 GDI+ 图像
	var bmp = gdip.bitmap(hBmp);
	winform.picturebox.background = bmp;
	
	//存为图像文件
	bmp.save("/clip.jpg")
	
	//存为 16 位 BMP 文件
	var bmp16 = bmp.clone(,,,,0x21005/*_PixelFormat16bppRGB555*/);
	bmp16.save("/16.bmp");

	//预览图像
	process.imageView("/clip.jpg")
}

import gdip.snap;
winform.btnWrite.oncommand = function(id,event){
	
	//截屏
	var bmp = gdip.snap();
	
	//显示图像
	winform.picturebox.background = bmp;
	
	//获取位图句柄
	var hBmp = bmp.copyHandle();
	
	//写入剪贴板
	win.clip.writeBitmap(
		hBmp, //位图句柄
		true, //让剪贴板接管位图，也就不用再复制，也不用再释放 hBmp 了
		true //清空剪贴板中其他格式数据
	);
	
	//如果上面的参数 @2 不是 true，就要用下面的代码释放位图
	//::DeleteObject(hBmp);
}

winform.show(); 
win.loopMessage();
```