• 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>

     

  • 相关阅读:
    记录log中的16进制和ASCII码字符输出
    有效的沟通技巧
    时间的真谛
    目标设定与时间管理
    第四代时间管理
    什么是高效沟通
    error LNK1104: cannot open file 错误解决方案
    js压缩工具1.0界面绘制
    时间管理的定义与目的
    JArgs命令行选项解析>Java套件
  • 原文地址:https://www.cnblogs.com/yitianhe/p/2047954.html
Copyright © 2020-2023  润新知