要在C#中生成全景,即是用C#去操作cmd,我在Krpano学习:在命令提示符(cmd)中生成全景的最后写出了在cmd中生成全景的命令:krpanotools64.exe makepano .config配置文件 全景图片 其他参数设置
因此,只要在C#中调用cmd,并把这句命令传入进去就行。
C#提供了Process类用于对本地和远程进行的访问权限,它也能启动和停止本地系统进程。具体看MSDN对Process的介绍。
具体实现为:
using System.Diagnostics;
private Process panoProcess = new Process();
//命令参数,参数用空格隔开,最好写完整路径:makepano .config配置文件 全景图片 其他参数设置(如此处设置全景类型为球形,视角为360)
string arguments = "makepano " + markidconfig + " " + picturepath + "-panotype=sphere -hfov=360";
panoProcess.StartInfo.FileName = krpanopath + "krpano/krpanotools64.exe";//执行程序
panoProcess.StartInfo.Arguments = arguments;//将参数传递进程序
panoProcess.Start();//启动程序
如果在全景生成后还希望执行其他过程,那么需要使用下面方法:
using System.Diagnostics;
private Process panoProcess = new Process();
string arguments = "makepano " + markidconfig + " " + picturepath + "-panotype=sphere -hfov=360";
panoProcess.StartInfo.FileName = krpanopath + "krpano/krpanotools64.exe";
panoProcess.StartInfo.Arguments = arguments;
panoProcess.EnableRaisingEvents = true;//为true时为进程终止时激发System.Diagnostics.Process.Exited事件
//进程退出时执行,此处即全景生成成功后执行
panoProcess.Exited += (object sender, EventArgs args) => //Lambda表达式
{
……
};
panoProcess.Start();//启动程序
panoProcess.WaitForExit();//等待进程退出
当然,如果是执行其他的cmd命令,则直接修改arguments的值(cmd中的执行参数)以及panoProcess.StartInfo.FileName的值(cmd中的执行程序)就行了。