如何将Skyline66嵌入WPF中

1.新建WPF项目;

2.添加引用

.net引用:System.Windows.Forms和WindowsFormsIntegration

skyline引用:AxInterop.TerraExplorerX和TerraExplorerX

3.代码如下:

/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
private SGWorld66 sgWorld = null;
public MainWindow()
{
InitializeComponent();

WindowsFormsHost host = new WindowsFormsHost();
AxTerraExplorerX.AxTE3DWindow axTE3DWindow1 = new AxTerraExplorerX.AxTE3DWindow();
host.Child = axTE3DWindow1;
this.globeWindow.Children.Add(host);

this.globeWindow.Loaded += GlobeWindow_Loaded;
}

private void GlobeWindow_Loaded(object sender, RoutedEventArgs e)
{
this.OpenProject();
}

private void OpenProject()
{
string tMsg = String.Empty;
// A. Set Project "Open" Method parameters
string tProjectUrl = @"D:\软件开发\Skyline\使用的Fly\Default.fly";

bool bIsAsync = false;
string tUser = String.Empty;
string tPassword = String.Empty;
// B. Instantiate Terra Explorer Globe and retrieve Project Interface

try
{
sgWorld = new SGWorld66();
// D. Open Project in synchronous mode
sgWorld.Project.Open(tProjectUrl, bIsAsync, tUser, tPassword);
}
catch (Exception ex)
{
tMsg = String.Format("OpenProjectButton_Click Exception: {0}", ex.Message);
MessageBox.Show(tMsg);
}
}

}

posted @ 2018-06-09 15:41  MaxFish  阅读(428)  评论(0编辑  收藏  举报