引言
台屏的操作是控制實現的常規操作,但是由於台屏本身固有的原因,存在一些問題,如:成本高,易損壞,維修難等。所以計算機虛擬台屏已經成為合適的替代品。在仿真領域,台屏的計算機虛擬更成為較好的一種方法。在計算機虛擬台屏的軟件編制中,由於台屏的特殊性,使軟件的編制存在一些相應的難點,如台屏圖像的縮放、漫游、旋轉等。
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
下面給出了一段完整的包含中心點、指針值、量程范圍、角度范圍、零點角度、指針位圖的程序源代碼,並適當加以注釋,以便具體說明如何對一幅指針位圖進行旋轉的。