坐标变换

Windows系统有两个坐标系,一个是屏幕坐标系,一个是窗口坐标系,Visual Graph系统中也有两个坐标系,一个是视图坐标系,另外就是每个图形都有自己的坐标系,见下图:

屏幕坐标系的原点位于屏幕左上角,窗口坐标系的原点位于窗口左上角,它们都是横坐标轴向右,纵坐标轴向下。

视图坐标系的原点则是图形系统的度量基准点,每个点的坐标值都是相对于此点的,当画面滚动或缩放时,每个图形的视图坐标是不变的。视图坐标系的横坐标轴向右,当Coordinate=0时,纵坐标轴向下,当Coordinate=1时,纵坐标轴向上。

每个图形都有自己的坐标系,会随着图形的旋转而旋转,原点位于旋转中心处(XOrigin、YOrigin)。当图形旋转时,除了Angle改变,不会影响其他任何属性,甚至图形的左边坐标和上边坐标(left、top)也不发生变化。图形上面每个点的相对坐标实际上等于图形不旋转时相对父对象的坐标,因此,在写程序时,我们通常不用考虑图形的旋转,只考虑它不旋转情形就可以了,系统会自动实现坐标变换。

由于页面是元件,因而也是图形,所以它也有自己的坐标系,这个坐标系恰好就是视图坐标系!

1、图形坐标系上各点坐标的计算方法

假设图形d内某一点的坐标是(x,y),则该点相对于页面(父对象)的坐标值(x1,y1)计算公式是:

cst = cos( d.Angle * 3.14159265359 / 180 );
sst = sin( d.Angle * 3.14159265359 / 180 );
x1 = d.XOrigin + ( x - d.XOrigin ) * cst - ( y - d.YOrigin ) * sst;
y1 = d.YOrigin + ( x - d.XOrigin ) * sst + ( y - d.YOrigin ) * cst;

见下图:

Coordinate = 0

Coordinate = 1

由此可知,旋转中心点(XOrigin,YOrigin)经变换后坐标值不变。

2.坐标变换公式

屏幕坐标点到窗口坐标点的变换函数是ScreenToClient,窗口坐标点到屏幕坐标点的变换函数是ClientToScreen

系统给每一个图形提供了两个有用的坐标变换函数,它们是:ViewToClientClientToView

前者是把一个图形坐标系内的点变换到窗口坐标系,后者是把一个窗口坐标系的点变换为图形坐标系的点。

巧妙地使用上面这两个函数,可以实现一个图形到另外一个图形的坐标变换。

如,图形d内的坐标点(x,y)转换到图形e内的坐标点(x2,y2),需要经过下面两步计算:

p = Point( x, y )
d.ViewToClient( p )
e.ClientToView( p )
x2 = p.x
y2 = p.y

假如当前页面是sheet1,下面的方法把视图逻辑坐标的原点变换到窗口坐标(x,y):

p = Point( 0, 0 )
sheet1.ViewToClient( p )
x = p.x
y = p.y

下面的方法把窗口左上角(窗口坐标的原点)变换到视图坐标(x,y):

p = Point( 0, 0 )
sheet1.ClientToView( p )
x = p.x
y = p.y

下面的方法把窗口右下角变换到视图坐标(x,y):

p = Point( ClientWidth, ClientHeight )
sheet1.ClientToView( p )
x = p.x
y = p.y

下面的方法把当前鼠标位置变换为视图坐标(x,y):

p = Point( 0, 0 )
GetCursorPos( p )
ScreenToClient( p )
sheet1.ClientToView( p )
x = p.x
y = p.y



回首页 软件简介 应用领域 技术特点 文件说明 集成开发环境 基本操作 系统参数 语法体系 activex技术文档 视图文件 页面 单元组 图形单元 文字单元 形状单元 折线单元 元件单元?VG在Delphi中的使用方法 VG在VB中的使用方法 VG在VC中的使用方法 VG在C#中的使用 Delphi Visual Basic Visual C++ C# Visual Basic .Net调用Visual Graph的函数 调试元件 自定义Visual Graph脚本语言 在运行状态下用鼠标拖动图形 图库的使用
基于Visual Graph快速开发井下人员定位系统 如何快速开发图形仿真软件系统 自已开发组态软件(one can do it) 工程平面图制作系统 工作流与图形系统 安全监测系统联网解决方案 矿井人员考勤定位系统简介 配电技术信息管理系统 线损管理系统解决方案 DR-DTS 调度员反事故演习培训仿真系统 调度自动化系统应用软件 福州电网无功电压 AVC 控制系统 马鞍山地区电网无功电压综合优化自动控制系统 变电站图形开票系统 DR-OTS电网调度智能防误操作系统 配网调度智能模拟操作系统 基于Visual Graph的电力系统图形开发

http://www.visual-graph.com

@2004-2007 北京图王Visual Graph.版权所有.