如何在WPF中嵌入Skyline提供的三维控件
2010-06-06 16:41
423 查看
以VS2008开发工具以为:
1、创建Visual C# .NET framework 3.0 Windows Application(WPF) 工程
2、添加 reference 到 .NET 组件 WindowsFormsIntegration
3、添加 reference 到 .NET 组件 System.Windows.Forms
4、添加 reference 到 前面生成的Windows Form DLL
5、WPF提供了一个WindowsFormsHost类( 需要添加using System.Windows.Forms.Integration;)用来做Windows Form的容器,我们要用到的Form控件就必须放进这个容器里。我们可以在InitializeComponent()后添加:
WindowsFormsHost host = new WindowsFormsHost();
AxTerraExplorerX.AxTE3DWindow axTE3DWindow1 = new AxTerraExplorerX.AxTE3DWindow();
host.Child = axTE3DWindow1;
this.TEWindow.Children.Add(host);
以上代码创建一个Windows Form容器,创建Windows Form控件,将控件添加到容器里,再将容器添加到Grid里,这样界面上就可以看到Form控件了,其布局将受到Grid的控制。
附后台完整代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Windows.Forms.Integration; // 在WPF中使用ActiveX控件需要引用的类
using TerraExplorerX; // Skyline提供的类
namespace WPFA_DEMO
{
/// <summary>
/// Interaction logic for Window1.xaml
/// </summary>
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
WindowsFormsHost host = new WindowsFormsHost();
AxTerraExplorerX.AxTE3DWindow axTE3DWindow1 = new AxTerraExplorerX.AxTE3DWindow();
host.Child = axTE3DWindow1;
this.TEWindow.Children.Add(host);
}
private TerraExplorer TE;
private ITerraExplorer51 TE51;
private void LoadFLY()
{
this.TE = new TerraExplorerClass();
this.TE51 = (ITerraExplorer51)TE;
this.TE51.Load(@"C:\izhaohe\skyline.fly");
this.TE.OnLoadFinished += new _ITerraExplorerEvents5_OnLoadFinishedEventHandler(TE_OnLoadFinished);
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
LoadFLY();
}
void TE_OnLoadFinished()
{
//MessageBox.Show("ok");
}
}
}
1、创建Visual C# .NET framework 3.0 Windows Application(WPF) 工程
2、添加 reference 到 .NET 组件 WindowsFormsIntegration
3、添加 reference 到 .NET 组件 System.Windows.Forms
4、添加 reference 到 前面生成的Windows Form DLL
5、WPF提供了一个WindowsFormsHost类( 需要添加using System.Windows.Forms.Integration;)用来做Windows Form的容器,我们要用到的Form控件就必须放进这个容器里。我们可以在InitializeComponent()后添加:
WindowsFormsHost host = new WindowsFormsHost();
AxTerraExplorerX.AxTE3DWindow axTE3DWindow1 = new AxTerraExplorerX.AxTE3DWindow();
host.Child = axTE3DWindow1;
this.TEWindow.Children.Add(host);
以上代码创建一个Windows Form容器,创建Windows Form控件,将控件添加到容器里,再将容器添加到Grid里,这样界面上就可以看到Form控件了,其布局将受到Grid的控制。
附后台完整代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Windows.Forms.Integration; // 在WPF中使用ActiveX控件需要引用的类
using TerraExplorerX; // Skyline提供的类
namespace WPFA_DEMO
{
/// <summary>
/// Interaction logic for Window1.xaml
/// </summary>
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
WindowsFormsHost host = new WindowsFormsHost();
AxTerraExplorerX.AxTE3DWindow axTE3DWindow1 = new AxTerraExplorerX.AxTE3DWindow();
host.Child = axTE3DWindow1;
this.TEWindow.Children.Add(host);
}
private TerraExplorer TE;
private ITerraExplorer51 TE51;
private void LoadFLY()
{
this.TE = new TerraExplorerClass();
this.TE51 = (ITerraExplorer51)TE;
this.TE51.Load(@"C:\izhaohe\skyline.fly");
this.TE.OnLoadFinished += new _ITerraExplorerEvents5_OnLoadFinishedEventHandler(TE_OnLoadFinished);
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
LoadFLY();
}
void TE_OnLoadFinished()
{
//MessageBox.Show("ok");
}
}
}
相关文章推荐
- 如何屏蔽SkylineGlobe提供的三维地图控件上的快捷键
- 如何将第三方控件嵌入ToolStrip控件,并提供Design-Time支持
- WPF中嵌入Skyline提供的COM组件填坑
- 如何将第三方控件嵌入ToolStrip控件,并提供Design-Time支持
- 如何将第三方控件嵌入ToolStrip控件,并提供Design-Time支持
- 如何将第三方控件嵌入ToolStrip控件,并提供Design-Time支持
- 如何快速把Skyline控件嵌入到现有系统中
- 【WPF】如何一键获得一类控件的Name值
- WPF如何让控件随着窗口大小而变化,布局不乱
- 如何:为控件提供工具箱位图
- Flex中如何通过设置fontFamily样式在NumericStepper控件中使用嵌入字体的例子
- 解决嵌入WinForm的WPF控件无法显示图片问题
- 在xml布局文件中,我们既可以设置px,也可以设置dp(或者dip)。一般情况下,我们都会选择使用dp,这样可以保证不同屏幕分辨率的机器上布局一致。但是在代码中,如何处理呢?很多控件的方法中都只提供了
- 如何在WPF程序中使用ArcGIS Engine的控件
- 如何利用Skyline的TerraExplorer Pro 6.5提供的API接口实现矢量图层数据的动态投影
- 在tableviewcell里面嵌入switch控件以及如何获取switch控件数据
- Metro javascript How to: 如何获取嵌入每个Item的控件的事件
- 如何在ASP.NET服务器控件库中嵌入JavaScript脚本文件
- 在WPF程序中使用摄像头兼谈如何使用AForge.NET控件
- WPF 控件如何绑定资源中的数据