当前位置:主页   - 电脑 - 程序设计 - C/C++
C++ Builder中应用GDI实现虚拟台屏
来源:网络   作者:   更新时间:2012-02-10
收藏此页】    【字号    】    【打印】    【关闭

  引言

  台屏的操作是控制实现的常规操作,但是由于台屏本身固有的原因,存在一些问题,如:成本高,易损坏,维修难等。所以计算机虚拟台屏已经成为合适的替代品。在仿真领域,台屏的计算机虚拟更成为较好的一种方法。在计算机虚拟台屏的软件编制中,由于台屏的特殊性,使软件的编制存在一些相应的难点,如台屏图像的缩放、漫游、旋转等。

  C++ Builder是基于Windows进行可视化C语言开发的最好的技术平台之一。利用C++ Builder提供的基本组件,结合Windows SDK(Software Development Kit)的功能函数,通过使用Windows图形设备接口(GDI),标准应用窗口T form及其属性和方法,编制了一套虚拟台屏软件。软件中针对操作台屏的一些特点,提供了有效的解决方法。

  台屏显示的指针旋转及透明

  软台屏的指针表的实现是台屏中最常遇到的问题,通常的软件是简化指针外表,即画一条线段来表示指针。在实际台屏的指针表不可简化时,软件的编制就需要实现指针图像的旋转。

  Windows图形设备接口(GDI)在图形绘制时,是独立于图形设备的。它在软件和硬件之间提供了一个抽象层。为了将图形绘制坐标向图形设备坐标进行转换, GDI设计了一个数据结构XFORM。结构如下:

typedef struct _XFORM {
 FLOAT eM11; 水平缩放因子,旋转角度的余弦
 FLOAT eM12; 水平比例因子,旋转角度的正弦
 FLOAT eM21; 垂直比例因子,旋转角度的正弦负值
 FLOAT eM22; 垂直缩放因子,旋转角度的余弦
 FLOAT eDx; 水平转换偏差
 FLOAT eDy; 垂直转换偏差
} XFORM;

  图形设备坐标(x’,y’)依据如下公式进行转换:

X’ = x * eM11 + y * eM21 + eDx
Y’ = x * eM12 + y * eM22 + eDy

  下面给出了一段完整的包含中心点、指针值、量程范围、角度范围、零点角度、指针位图的程序源代码,并适当加以注释,以便具体说明如何对一幅指针位图进行旋转的。

其它资源
来源声明

版权与免责声明
1、本站所发布的文章仅供技术交流参考,本站不主张将其做为决策的依据,浏览者可自愿选择采信与否,本站不对因采信这些信息所产生的任何问题负责。
2、本站部分文章来源于网络,其版权为原权利人所有。由于来源之故,有的文章未能获得作者姓名,署“未知”或“佚名”。对于这些文章,有知悉作者姓名的请告知本站,以便及时署名。如果作者要求删除,我们将予以删除。除此之外本站不再承担其它责任。
3、本站部分文章来源于本站原创,本站拥有所有权利。
4、如对本站发布的信息有异议,请联系我们,经本站确认后,将在三个工作日内做出修改或删除处理。
请参阅权责声明