2011-07-14 72 views
0

我正在使用凝视检测硬件,我有一些数字问题。首先从(0,0)[屏幕左上角]到(1,1)[屏幕右下角]的坐标工作。当我凝视屏幕左上角时,系统拾取(0.35,0.30),当我注视右下角系统拾取(0.65,0.80)时它拾取这些值而不是(0,0)和(1,1)是因为屏幕分辨率是1600x900,但我的应用程序只占用屏幕的一部分(817x500)。我的问题是,如果我的应用程序窗口是(817x500)??我怎样才能将实际的数字(如0.35,0.30)转换为屏幕上的某个位置,如(400,200)?指向分辨率转换

我正在使用VB6。

回答

2
  • Screen.WidthScreen.Height返回整个屏幕的宽度和高度。
  • 表格WidthHeight属性返回您的表格的宽度和高度frm。这些是外部尺寸,包括边框和标题栏。

尝试增加这样的事情你的表单代码(AIR代码)

Sub GazeToForm(ByVal gazeX As Double, ByVal gazeY As Double, _ 
    ByRef frmX As Double, ByRef frmY As Double) 

    frmX = (gazeX * Screen.Width) - Me.Left 
    frmY = (gazeY * Screen.Height) - Me.Top 

End Sub 

所有这些坐标和尺寸都在twips,作为usual in VB6

1

你可以写ScreenWidth * x - Window.Left

+0

你能解释一下这段代码的作用吗?什么是Window.Left? –

+0

它执行基本的算术。它将数字缩放至屏幕分辨率。 'Window.Left'是你窗口的X坐标。 – SLaks