程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> vc教程 >> C++ Builder中應用GDI實現虛擬台屏

C++ Builder中應用GDI實現虛擬台屏

編輯:vc教程

引言

台屏的操作是控制實現的常規操作,但是由於台屏本身固有的原因,存在一些問題,如:成本高,易損壞,維修難等。所以計算機虛擬台屏已經成為合適的替代品。在仿真領域,台屏的計算機虛擬更成為較好的一種方法。在計算機虛擬台屏的軟件編制中,由於台屏的特殊性,使軟件的編制存在一些相應的難點,如台屏圖像的縮放、漫游、旋轉等。

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. 下一頁:
Copyright © 程式師世界 All Rights Reserved