zoukankan      html  css  js  c++  java
  • Skyline TEP5.1.3二次开发入门——初级(七)

    6.7  IRender5

    主要用来获取当前屏幕信息、鼠标信息和三维场景中的地理坐标信息,以及它们之间的坐标转换等;

    Quality

    当前3D窗口中渲染的MPT文件的质量;

    HudMode

    定义HUD的显示设置(包括导航,指北等等);

    GetRenderRect

    返回3D窗口中渲染的区域范围,以像素表示(对应屏幕Left,Top,Width,Height);

    ScreenToTerrain

    将屏幕上的像素转换成地形坐标,并返回绝对高程值;

    GetMouseInfo

    本方法返回鼠标位置(屏幕坐标);

    SetMouseInputMode

    本方法定义鼠标的输入模式,不同的输入模式允许你控制不同的鼠标行为;

    SetMouseCursor

    本方法用来定义设置鼠标光标。为了改变光标你必须首先设置光标输入模式为1(MI_COM_CLIENT);

    ScreenToWorld

    本方法返回屏幕上所指像素点的地形坐标,如果选择的像素是一个对象的一部分,而不是地形,对象的ObjectID被返回;

    WorldToScreen

    本方法返回一个特定地形坐标是否在3D窗口中的一个指示,如果是,给出特定点的屏幕坐标,仅能在IRender4中使用。

    SetHUDLayer

    本方法允许一个HUD层的绘画定制,以流的方式进行保存,将图绘制在3D窗口中;

    GetMouseInputMode

    本方法获得鼠标的输入模式(仅在IRender5中使用);

    代码示例:

    【C#】

    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;

    using TerraExplorerX;

     

    namespace ExCodeIRender

    {

        public partial class Form1 : Form

        {

            private TerraExplorer TE;

            private ITerraExplorer51 TE51;

            private IRender5 IRender;

     

            public Form1()

            {

                InitializeComponent();

            }

     

            private void Form1_Load(object sender, EventArgs e)

            {

                this.TE = new TerraExplorerClass();

                this.TE51 = (ITerraExplorer51)TE;

                IRender = (IRender5)TE;

                           

                this.TE.OnFrame += new _ITerraExplorerEvents5_OnFrameEventHandler(TE_OnFrame);

     

                TE51.Load(Application.StartupPath + "\\Default.fly");

            }

     

            void TE_OnFrame()

            {

                object plongFlags, plSX, plSY;

                IRender.GetMouseInfo(out plongFlags,out plSX,out plSY);

                Double dx, dy, dh;

                IRender.ScreenToTerrain(Convert.ToInt32(plSX), Convert.ToInt32(plSY), out dx, out dy, out dh);

     

                string scontent = "当前鼠标点坐标:" + "\r\n$X:" + dx.ToString() + "\r\n$Y:" + dy.ToString() + "\r\n$H:" + dh.ToString();

                this.label1.Text = scontent;

            }

        }

    }

    【javascript】

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="IRender5.aspx.cs" Inherits="ExCode_IRender5" %>

     

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

     

    <html xmlns="http://www.w3.org/1999/xhtml">

    <head runat="server">

         <title>Skyline二次开发教程【配套示例】</title>   

        <script type ="text/javascript">

            function Init() {

                var TE = _$SGCreateTEObj();

                var ITerraExplorer = TE.interface("ITerraExplorer51");

                ITerraExplorer.Load("D:\\2010售前演示系统\\WPFA-DEMO\\WPFA-DEMO\\bin\\Debug\\FLY\\Default.fly");

                ITerraExplorer.AttachEvent("OnFrame", OnFrame);

            }

            function OnFrame()

            {

                var myparam = new _$SGWorldParam();

                GetMouseInfo(myparam);

                var myparam2 = new _$SGWorldParam();

                GetWorldParam(myparam.x, myparam.y, myparam2);

                var scontent = "当前鼠标点坐标:" + "\r\n$X:" + myparam2.x + "\r\n$Y:" + myparam2.y + "\r\n$H:" + myparam2.h;

                window.document.getElementById("Title").innerHTML = scontent;

            }

     

            //------------------------------------------------------------

            // 创建三维对象 赵贺 2009.01.25.

            //------------------------------------------------------------

            function _$SGCreateTEObj() {

                var obj = window.document.getElementById("TE");

                if (obj == null) {

                    obj = document.createElement('object');

                    document.body.appendChild(obj);

                    obj.name = "TE";

                    obj.id = "TE";

                    obj.classid = "CLSID:3a4f9191-65a8-11d5-85c1-0001023952c1";

                }

                return obj;

            }

            //------------------------------------------------------------

            // 定义集合参数 赵贺 2009.01.25.

            //------------------------------------------------------------

            function _$SGWorldParam() {

                this.x = 0;

                this.y = 0;

                this.h = 0;

                this.yaw = 0;

                this.pitch = 0;

                this.roll = 0;

                this.OID = 0;

                this.OType = 0;

            } 

        </script>

        <script type ="text/vbscript">

        '------------------------------------------------------------

        ' GetMouseInfo 得到鼠标信息 赵贺 2009.02.18.

        '------------------------------------------------------------

        sub GetMouseInfo(param)

            Dim IRender

            Set IRender = TE.interface("IRender5")

            IRender.GetMouseInfo longFlags,longScreenX,longScreenY

            param.x = longScreenX

            param.y = longScreenY

            param = longFlags

        end sub

        '------------------------------------------------------------

        ' IRender 坐标转换 赵贺 2009.01.25.

        '------------------------------------------------------------

        sub GetWorldParam(x,y,param)  

            Dim objType, dX, dY, dH, objID

            objType = 0

            'Dim TE

            'Set TE = _$SGCreateTEObj()

            Dim IRender

            Set IRender = TE.interface("IRender5")

            IRender.ScreenToWorld x, y,objType,dX,dH,dY,objID

            param.x=dX

            param.y=dY

            param.h=dH

            param.OID=objID

            param.OType=objType

            param=objID

        end sub

        </script>

    </head>

    <body onload = "Init()">

        <form id="form1" runat="server">

        <div id = "Title"></div>

        <div id="Main">

            <object id="TerraExplorer3DWindow" classid="CLSID:3a4f9192-65a8-11d5-85c1-0001023952c1"

                width="521" height="521">

            </object>

        </div>

        </form>

    </body>

    </html>

     

  • 相关阅读:
    在TreeView控件节点中显示图片
    PAT 甲级 1146 Topological Order (25 分)
    PAT 甲级 1146 Topological Order (25 分)
    PAT 甲级 1145 Hashing
    PAT 甲级 1145 Hashing
    PAT 甲级 1144 The Missing Number (20 分)
    PAT 甲级 1144 The Missing Number (20 分)
    PAT 甲级 1151 LCA in a Binary Tree (30 分)
    PAT 甲级 1151 LCA in a Binary Tree (30 分)
    PAT 甲级 1149 Dangerous Goods Packaging
  • 原文地址:https://www.cnblogs.com/yitianhe/p/2047954.html
Copyright © 2011-2022 走看看