首页 / 浏览问题 / 组件GIS / 问题详情
在.net组件中加入两个SCENECONTROL,球面显示有问题
27EXP 2021年08月26日

使用产品:iObjects .NET  64位 .net4.0 操作系统:win10 x64
数据类型:文件型
问题详细描述:我想实现同时显示两个SCENE,一个加载球面,一个加载平面,两个使用同一个SMWU,我的SMWU里已建好了一个球面场景“三维模型场景”,一个平面场景“实景三维场景”,在IDESKTOP中打开正常。但是在.NET中,我加载一个没有问题,同时加载两个的时候,球面场景显示就有问题。附截图和代码,困扰我好几天了,麻烦解答一下,谢谢!!我发现只要去掉m_sceneControl_real.Scene.Open("实景三维场景");    这一行,球面就能正常显示。

using SuperMap.Data;
using SuperMap.UI;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApp1
{
    public partial class Form1 : Form
    {

        private SceneControl m_sceneControl_model;
        private SceneControl m_sceneControl_real;
        private LayersControl m_layersControl;
        private Workspace m_workspace;

        public Form1()
        {
            InitializeComponent();

            //初始化workspace
            m_workspace = new Workspace();

            //初始化layercontrol
            m_layersControl = new LayersControl();
            m_layersControl.Dock = DockStyle.Fill;
            splitContainer1.Panel1.Controls.Add(m_layersControl);

            //球面场景
            m_sceneControl_model = new SceneControl();
            m_sceneControl_model.Scene.LatLonGrid.IsVisible = false;
            m_sceneControl_model.Dock = DockStyle.Fill;
            m_sceneControl_model.Name = "m_sceneControl_model";
            splitContainer2.Panel1.Controls.Add(m_sceneControl_model);

            //平面场景
            m_sceneControl_real = new SceneControl();
            m_sceneControl_real.Dock = DockStyle.Fill;
            m_sceneControl_real.Name = "m_sceneControl_real";
            m_sceneControl_real.Scene.Type = SuperMap.Realspace.SceneType.Flat;
            splitContainer2.Panel2.Controls.Add(m_sceneControl_real);

            //打开默认工作空间
            WorkspaceConnectionInfo wsinfo = new WorkspaceConnectionInfo();
            wsinfo.Server = @"C:\Users\MB\Desktop\defaultworkspace.smwu";
            wsinfo.Type = WorkspaceType.SMWU;
            m_workspace.Open(wsinfo);

            //layercontrol绑定三维模型场景
            m_layersControl.Scene = m_sceneControl_model.Scene;


            m_sceneControl_real.Scene.Workspace = m_workspace;
            m_sceneControl_real.Scene.Open("实景三维场景");
            m_sceneControl_real.Scene.Refresh();


            m_sceneControl_model.Scene.Workspace = m_workspace;
            m_sceneControl_model.Scene.Open("三维模型场景");
            m_sceneControl_model.Scene.Refresh();

        }
    }
}

1个回答

//球面场景
            m_sceneControl_model = new SceneControl();
            m_sceneControl_model.Dock = DockStyle.Fill;
            splitContainer2.Panel1.Controls.Add(m_sceneControl_model);

            //平面场景
            m_sceneControl_real = new SceneControl();
            m_sceneControl_real.Dock = DockStyle.Fill;
            splitContainer2.Panel2.Controls.Add(m_sceneControl_real);

将构建的部分代码改一下
4,620EXP 2021年08月26日
按这个改了之后还是一样。、。。
可以将例子上传到百度网盘嘛,发过来具体看一下
链接:https://pan.baidu.com/s/1WVAMYnCVr-5ipRzUJSANwA
提取码:yn6b

麻烦了!!

运行没啥问题呢,你的电脑是什么显卡的,是独立显卡还是集成显卡,将vs程序设置为用独立显卡去熏染看一下

笔记本3060显卡  我设置了用独显   问题依旧。。。

链接:https://pan.baidu.com/s/11Wbc7QhEKRJFgjwLiwVa7w
提取码:ea4h
把测试用的组件包发你看一下呢

还是不行  crying  

大佬方便远程看一下找下原因么。

...