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>

 

原文地址:https://www.cnblogs.com/yitianhe/p/2047954.html