(一)导出图片功能
BCB中导出图片的功能比较简单,可以先把图片显示在一个Image控件上然后再导出,在上一篇中讲述了怎么通过OPENCV将图片显示在Image控件上,所以这里就在已经显示的基础上导出图片了。添加一个Image控件(imgShowPic),一个TSaveDialiog控件(dlgSavePic)。以下是实现代码:
dlgSavePic->FileName = "Text.bmp" ; // 这里设置保存对话框的文件保存名,可以不设置。
if (dlgSavePic->Execute()) // 打开保存文件夹
{
imgShowPic->Picture->SaveToFile(dlgSavePic->FileName); // 利用Image控件的函数来保存。
}
(二)导出视频功能
这里的导出功能其实是个另存为的功能,也就是文件拷贝。只不过不是调用简单的CopyFileto,而是调用系统的API来实现的,关联进度条。
以下就是实现代码:
HWND m_hWnd=Form1->Handle; //当前 窗口的句柄
char strTitle[]="File copying";
SHFILEOPSTRUCT FileOp; // 这是最主要文件结构
ZeroMemory(&FileOp, sizeof(FileOp));
FileOp.hwnd=m_hWnd;
FileOp.wFunc=FO_COPY; // 选择拷贝功能
//执行文件拷贝
FileOp.fFlags=FOF_ALLOWUNDO ;
FileOp.hNameMappings=NULL;
FileOp.lpszProgressTitle=strTitle;
String sF, desc;
sF=源文件路径+'\0'; // 这是是最需要注意的地方,加一个后缀‘\0’才能正常使用,不然会报错
FileOp.pFrom=sF.c_str();
desc=目标路径+'\0'; // 同上,不加会报“无法复制”的错误
FileOp.pTo=desc.c_str();
int iResult=SHFileOperation(&FileOp);