以AO方式给SceneControl控件设置BaseHeight

用SceneContral控件给数据添加基本高度以显示三维效果,网上的例子很多,如下:

private void addBaseHeight(IRasterLayer layer)
        {
            IRasterSurface pSurface = new RasterSurface();
            IRaster raster = (IRaster)layer.Raster;
            IRasterBandCollection rasterbands = raster as IRasterBandCollection;
            IRasterBand rasterband = rasterbands.Item(0);
            pSurface.RasterBand = rasterband;
         
            ILayerExtensions layerextensions = layer as ILayerExtensions;         
            I3DProperties properties = new Raster3DPropertiesClass();
            for (int i = 0; i < layerextensions.ExtensionCount; i++)
            {
                if (layerextensions.get_Extension(i) != null)
                {
                    properties = layerextensions.get_Extension(i) as I3DProperties;
                    break;
                }
            }
            properties.ZFactor = xx;
            properties.BaseOption = esriBaseOption.esriBaseSurface;
            properties.BaseSurface = pSurface as IFunctionalSurface;        
            properties.Apply3DProperties(layer);

}

新手复制代码调试时很容易遇到的错误是layerextensions的ExtensionCount很有可能为0,是因为不能将三维属性赋给图层后再一起加到SceneControl里面,必须将没有带三维属性的layer预先添加至SceneControl控件,然后再赋予三维属性。这样一来ExtensionCount就不会为0了。

另外扩展一点:给如FeatureLayer等非栅格数据设置基本高度,必须是要有其他Surface数据来作为支撑的,I3DProperties的BaseSurface属性不设则无效。

时间: 2024-08-06 10:51:40

以AO方式给SceneControl控件设置BaseHeight的相关文章

.NET中TextBox控件设置ReadOnly=true后台取不到值三种解决方法

.NET中TextBox控件设置ReadOnly=true后台取不到值三种解决方法 当TextBox设置了ReadOnly=true后要是在前台为控件添加了值,后台是取不到的,值为空,多么郁闷的一个问题经过尝试,发现可以通过如下的方式解决这个问题.感兴趣的朋友可以了解下 当TextBox设置了ReadOnly="true" 后,要是在前台为控件添加了值,后台是取不到的,值为“空” 原理没想通,说不清楚微软是出于什么考虑的,不过有时是要我们能通过前台脚本来填充值,并不希望用户修改其控件内

iOS之用xib给控件设置圆角、边框效果

xib中为各种控件设置圆角 通过代码的方式设置 @interface ViewController () @property (weak, nonatomic) IBOutlet UIView *myView; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; self.myView.layer.masksToBounds = YES; self.myView.layer.cornerRa

Android给TextView和EditText等控件设置透明背景、圆角边框

第一种方法:在drawable文件夹下新建一个文件设置背景样式 代码: 在drawable文件夹下面新建textviewborder.xml <?xml version="1.0" encoding="UTF-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="#80858

SplendidCRM中给来自EditView中的listbox控件设置选中值或数据源

DropDownList list = this.findContol("aas") as DropDownList;list.DataSource = new DataTable() ------------------------------- Control ctl = this.FindControl("NAME");            if (ctl != null)            {                if (ctl is Dro

js控件设置只读属性和不可用属性

介绍js实现只读的几种方法: 设置控件只读的话,我们要先清楚哪些没有readOlny这个属性 我知道的checkbox和RadioButton没有readOlny这个属性,我上一篇已经介绍了如何设置checkbox的只读了. 今天我们只是了解通用的控件只读和不可用 document.getELementById(textId).disabled=true;document.getElementById(textId).setAttribute("disabled", true);  d

Android动态布局,并动态为TextView控件设置drawableLeft、drawableRight等属性添加图标

注:(图中每一个条目和图标都是由代码动态生成) 代码动态布局,并需要为每一个条目设置图标,此时用到了 android:drawableLeft="@drawable/icon"  父xml文件: [html] view plaincopyprint? <?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.andr

Button UIImageVIew UIView UILabel 等控件设置一个圆角

给控件设置圆角平时大家用的最多应该是layer.cornerRadius这个属性吧  但是这个属性设置成功后是4个角都是圆角类型的; 现在控制器里创建一个imageVIew UIImageView *imageView=[[UIImageView alloc]initWithFrame:CGRectMake(100, 100, 100, 50)]; imageView.backgroundColor=[UIColor redColor]; [self.view addSubview:imageV

当控件设置disabled=&quot;disabled&quot;属性时,后台不能获取修改后的值

<input id="Text1" type="text" disabled="disabled" /> 因为控件设置的disabled="disabled",是把控件给禁用了,所以后台想要获取到修改后的值有两种方法解决: 一.既然是把控件给禁用了才获取不到修改的值,那就按照这种思路解决,在后台给数据库修改数据之前,先把disabled属性设置为False,获取到控件的值,之后再把 disabled属性设置为Tru

使用 TableLayoutPanel 控件设置窗体布局

使用 TableLayoutPanel 控件设置窗体布局 在 Visual Studio IDE 左侧,找到"工具箱"选项卡. 选择"工具箱"选项卡,随即将显示工具箱.(或者,在菜单栏上,依次选择"视图"."工具箱".) 选择"容器"组旁边的小三角形符号以打开该组,如下图所示. "容器"组 可以向窗体中添加类似按钮.复选框和标签这样的控件. 在工具箱中双击 TableLayoutPane