发明内容
为克服现有技术的缺陷,本发明提出一种医疗会诊系统中远程桌面的本地显示方法,不仅可以方便的设置远程桌面的多屏显示,还可以方便的调整图像显示区域,从而方便会诊医生进行远程协助的各项操作。
本发明采用如下技术方案实现:一种医疗会诊系统中远程桌面的本地显示方法,其包括步骤:
A、建立标准坐标系,将每个本地屏幕分别映射为控制界面上的一个显示映射区域,选择其中一个显示映射区域确定对应的本地屏幕为远程桌面的本地显示屏幕;
B、建立远程桌面与本地屏幕之间的坐标映射关系,确定远程桌面与本地屏幕之间相对标准坐标系的缩放比例系数;
C、当用户在控制界面拖动远程桌面的映射矩形区域FServerRect时,按照缩放比例系数确定调整本地屏幕的显示映射区域FCurrentRect,获取远程桌面的图像显示在本地屏幕,从而通过调整远程桌面的映射矩形区域FServerRect来调整远程桌面显示在本地屏幕上的图像显示区域。
其中,步骤A具体包括:
获取本地屏幕的数量,以及每个本地屏幕的显示区域;
建立标准坐标系,根据多个显示区域的大小计算确定多个显示区域在标准坐标系下的缩放比例,从而将每个本地屏幕分别映射为控制界面上的一个显示映射区域;
选择其中一个显示映射区域确定对应的本地屏幕为远程桌面的本地显示屏幕。
其中,当需要进行本地多屏显示切换时,在对应的显示映射区域进行鼠标点击,则该显示映射区域对应的本地屏幕将会被设置为远程桌面的本地显示屏幕。
其中,在步骤C中,是通过鼠标操作,在控制界面拖动远程桌面的映射矩形区域FServerRect。
其中,通过记录鼠标操作过程中的鼠标坐标变化,计算出鼠标在X方向和Y方向的移动距离iDeltaX、iDeltaY,并根据缩放比例系数确定调整本地屏幕的显示映射区域FCurrentRect。
与现有技术相比,本发明具有如下有益效果:
本发明为远程桌面提供了方便的多屏显示切换方案,充分利用了医疗设备资源,并方便会诊医生进行阅片等操作,为不同分辨率下的显示区域调整提供了便捷的解决方案,使会诊医生能更容易的进行阅片等操作。
具体实施方式
远程桌面属于一种显示系统,能够将完整的窗口界面通过网络,传输到另一台计算机的屏幕上。虚拟网络计算机一般由两部分组成:一部分是客户端的应用程序(比如,VNC Viewer),用于远程接入运行VNC Server的计算机并显示其桌面环境;另外一部分是服务器端的应用程序(比如,VNC Server),此服务程序在主计算机上运行,截取计算机屏幕,并发送至客户端。远程桌面在医疗领域有广泛的应用价值,如在会诊和示教等领域。
若本地配置有多屏显示,则需要定位远程桌面在哪个本地屏幕上显示。如在放射影像远程协助操作中,往往需要将影像界面显示在高灰度显示器中。
本发明提供一键式切换显示屏幕的实现方法。
为了使远程桌面能够在本地正常显示,且考虑远程桌面的显示分辨率和本地显示方案有所不同,所以需要根据不同的分辨率对显示界面进行调整。为此,需要确定远程桌面与本地屏幕之间的屏幕映射方案,实现远程桌面在本地不同分辨率情况下的显示;同时,为了用户更方便的浏览不同分辨率的远程桌面,还需要确定远程桌面显示区域的同步移动配置方案。
首先,需要确定远程桌面和本地显示屏幕之间的坐标映射关系。
如果将显示屏幕映射到坐标系中,(left,top)和(right,bottom)分别对应屏幕左上坐标点和右下坐标点的位置,如图1所示。
为了使远程桌面和本地显示屏幕能够在缩略图中有直观的显示,需要建立一个标准坐标系。根据标准坐标系,我们可以计算出等比缩放的缩放比例系数,定义为:ratio=(bottom-top)/(y-x),并计算其在标准坐标系中的显示矩形区域。本地屏幕、远程桌面在标准坐标系中的映射关系如图2所示。
其次,确定映射区域的移动显示。
当远程桌面的分辨率与当前显示器的分辨率不一致时,如果需要查看未显示出来的图像,则需要对拖动对应的显示矩形区域,来实现特定部分图像的显示。相对于传统远程桌面左右拖动条操作,此方式更为方便灵活。
通过鼠标在映射矩形区域的移动操作,得到一个坐标点的偏移量DeltaX和DeltaY。定义远程桌面的映射矩形区域为FServerRect,本地屏幕的映射矩形区域为FCurrentRect,则位移后的FServerRect显示如图3所示。
为了优化远程桌面的显示,需要对不同分辨率下的界面显示进行范围限制,我们定义如下:
1、FServerRect的宽度大于FCurrentRect的宽度时,此时设置FServerRect在X轴方向偏移DeltaX个单位。如果x1小于FCurrentRect的left值,则x1设置为FCurrentRect的left值。如果x2大于FCurrentRect的right值,则x2设置为FCurrentRect的right值。
2、FServerRect的高度大于FCurrentRect的高度时,此时设置FServerRect在Y轴方向偏移DeltaY个单位。如果y1小于FCurrentRect的top值,则y1设置为FCurrentRect的top值。如果y2大于FCurrentRect的bottom值,则y2设置为FCurrentRect的bottom值。
再次,还需要确定实时图像的显示偏移。
当远程桌面发生变化时,会将改变后的图像实时传递至本地屏幕进行显示。因此远程映射矩形区域发生偏移之后,本地屏幕实时显示的图像也要根据操作进行相应的偏移,如图4所示。本方案在显示区域发生变化后,仅更新能够在本地界面上显示出来的部分图像,从而提高运行效率。
结合图5所示,本发明的一个具体实施例中,包括如下实现步骤:
步骤S1、选择本地屏幕的其中之一为远程桌面的本地显示屏幕。
由于会诊的需要,我们将远程桌面显示在一台高灰度显示器中。我们使用Screen.MonitorCount获取已连接的显示器(或显示屏幕)数量,并定义LMonitor数据结构,如表1所示:
LMonitor |
+MonitorNum:integer; |
+ShowRect:TRect; |
+PreviewRect:TRect; |
+Primary:Boolean; |
表1远程桌面的显示器数据结构
分别获取连接显示器的显示区域ShowRect为Screen.Monitors[i].WorkareaRect,并根据多个显示区域的大小计算确定在标准坐标系下的缩放比例,获取PreviewRect,获取方法定义为OffsetRectangle。多显示器在标准坐标系映射完成之后,将各个显示器的预览图像绘制在控制界面的显示区域。如图6所示为本地两个显示屏幕的显示映射示意图。
因此,存在多个本地屏幕时,用户只需要在对应的显示映射区域进行鼠标点击,则相应的屏幕将会被设置为远程桌面的默认显示屏幕,从而轻易完成本地多屏显示的切换。
步骤S2、建立远程桌面与本地屏幕之间的坐标映射关系。
首先获取远程桌面的分辨率,解析服务端发送过来的桌面分辨率信息,并保存为FPreviewServerRect;然后,获取本地显示屏幕的分辨率,保存为FPreviewCurrentRect;完成之后,按照图2所示方式,将远程桌面和本地桌面映射到统一的控制界面中,如图7A表示远程桌面高度大于本地显示高度映射示意图,图7B表示远程桌面宽度大于本地显示宽度映射示意图。
步骤S3、响应映射区域移动操作。
远程桌面本地映射完成后,如用户在不同分辨率下需要调整图像的显示区域,则可以直接拖动远程桌面的映射矩形区域。
a)响应鼠标左键按下消息OnLButtonDown,当鼠标左键按下时,更改移动标志位FMouseActive的值为true,记下鼠标坐标为(FMousePos.x,FMousePos.y)。
b)在矢量图中响应鼠标移动消息OnMouseMove,通过OnMouseMove传递过来的鼠标坐标参数x、y,与步骤1中保存的鼠标坐标(FMousePos.x,FMousePos.y)计算出鼠标在X方向和Y方向的移动距离iDeltaX、iDeltaY,通过步骤a)中的FPreviewServerRect和计算出的iDeltaX、iDeltaY计算出矢量图新的显示区域newRect,由于远程图像不能超过本地屏幕的显示范围,所以需要对计算完成的newRect进行三种情况下的调整。如果本地屏幕的高度和宽度值均比远程屏幕要大,则远程桌面能够显示完全,不需要调整;其他情况下,如果远程屏幕的宽度大于本地屏幕的宽度,则newRect的left值为max(FpreviewCurrentRect.left,newRect.left),newRect的right值为min(FpreviewCurrentRect.right,newRect.right);如果远程屏幕的高度大于本地屏幕的高度,则newRect的top值为max(FpreviewCurrentRect.top,newRect.top),newRect的bottom值为min(FpreviewCurrentRect.bottom,newRect.bottom);调整完成后调用类DrawPreviewWindow方法重绘移动后映射区域的显示位置。
c)响应左键弹起消息OnLButtonUp,更改移动标志位FMouseActive的值为false,记初始化鼠标坐标为(FMousePos.x,FMousePos.y)为(0,0)。
步骤S4、实时图像的区域映射
当远程桌面的映射矩形区域的位置发生变化后,本地屏幕上用于实时显示图像的区域也需要进行相应的调整,定义命令comViewOffset来执行相应的操作,其参数为newRect坐标(left,top)对应的实际坐标点pos,其计算方法为:
pos.x=(newRect.left-FPreviewServerRect)*FRatio;
pos.y=(newRect.top-FPreviewServerTop)*FRatio,FRatio
为前述定义的缩放比例系数。
根据坐标变化可得到真实的远程桌面矩形区域FServerRect,我们可以获取后台bmp对象FbmpBack的区域内图像,调用StretchDIBits方法将图像DIB(位图)信息拷贝至目标FServerRect,最后使用CopyRect完成FServerRect内图像信息的复制。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。