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>