亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

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

2019-11-17 05:12:14
字體:
來源:轉載
供稿:網友
引言

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

   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

   下面給出了一段完整的包含中心點、指針值、量程范圍、角度范圍、零點角度、指針位圖的程序源代碼,并適當加以注釋,以便具體說明如何對一幅指針位圖進行旋轉的。

void __fast call TForm1::rotatedraw(int x, int y,/* 中心點是指圍繞旋轉的點*/float ff, /*指針值是指針指向的數值*/float hr,float lr, /*量程范圍是指針表的顯示數值區間*/ float scale0,float scale1, /*角度范圍是指針表的顯示角度區間*/float rscale, /*零點角度是指針表的最小顯示數值角度*/  Graphics::TBitmap *p/*指針位圖是指針的標準橫向由左向右的位圖指針*/){ 
  XFORM xform;
  Float tf, f;
  /*防止除零導致浮點溢出*/
  If (x==0) x=0.0001;
   /*旋轉角度換算*/
   To=(ff-lr)*(scale0-scale1)/(hr-lr)-rscale;
   F=3.14159265*tf/180;
   /*轉換坐標系定義*/
   Xform.eM11 = cos (f);
   Xform.eM12 = sin (f);
   Xform.eM21 = -sin (f);
   Xform.eM22 = cos (f);
   Xform.eDx =x- (sqrt (x*x+y*y))*(cos (f+atan (y/x)));//-sin (f)*p->Height/2;
   Xform.eDy =y- (sqrt (x*x+y*y))*(sin (f+atan (y/x)));//-cos (f)*p->Height/2;
   /*轉換坐標系設置*/
   SetGraphicsMode (Form1->Canvas->Handle, GM_ADVANCED);
   SetWorldTransform (Form1->Canvas->Handle, &xform);
   /*透明方式*/
   P->Transparent = true;
   /*透明顏色定義*/
   P->Transparent Color = p->Canvas->Pixels [0][0];
   /*指針繪制*/
   Form1->Canvas->Draw (x, y, p);
   /*透明方式取消*/
   P->Transparent = false;
   /*轉換坐標系恢復設置*/
   Xform.eM11 = 1;
   Xform.eM12 = 0;
   Xform.eM21 = 0;
   Xform.eM22 = 1;
   Xform.eDx = 0;
   Xform.eDy = 0;
   SetWorldTransform (Form1->Canvas->Handle, &xform);
}

   這段代碼中,還涉及到圖像的透明問題,由于位圖是矩形的,為了不覆蓋背景圖像,可將其它部分設置成單一色調,并定義為透明顏色,這樣就可實現圖像式指針的旋轉了。
但在畫面實現時,存在圖像不連續的問題,為解決這一問題,可設置專用定時器Point Timer,它的間隔時間可設置為30毫秒,這樣一來刷新頻率高于24Hz,人眼無法感覺不連續。這樣只需選取適當的增減幅度就能實現指針的連續移動。

  臺屏顯示的漫游

   在軟臺屏顯示時,臺屏在保障顯示的清楚度的同時,有時大小要大于顯示器的全屏,而操作員要求可進行屏幕漫游,即畫面的拖拉移動。為實現這一功能,可在應用窗口中設置水平及垂直滾動條--HorzScrollBar、VertScrollBar,并在相應的動態顯示坐標加上水平及垂直偏移量。在進行漫游操作的相應事件處理里對水平及垂直滾動條的位置屬性進行修正。例句如下:

   以這兩句代替實現動態操作時的x,y坐標

X-HorzScrollBar->Position
Y-VertScrollBar->Position
在實現漫游操作時,執行
HorzScrollBar->Position= HorzScrollBar->Position +movx/*偏移量x*/
VertScrollBar->Position=VertScrollBar->Position+movy; /*偏移量y*/

  臺屏顯示的縮放及光字處理

   臺屏軟件的制作可以采用全貌圖為調用總菜單,但即使是這樣,仍然需要實現畫面的縮放。畫面縮放的實現可有多種方法,比如采用圖像旋轉相同的方法修改轉換坐標系XFORM,設置如下:

xform.eM11 =X坐標比例因子;
Xform.eM12 =0;
Xform.eM21 = 0;
xform.eM22 =Y坐標比例因子;;
xform.eDx =偏移量x;
xform.eDy =偏移量y;

   此外,也可以采用在標準應用窗口Tform上添加一層影像Timage,并設置它的伸展屬性Stretch 為 TRUE。這樣在加載任意大小的圖像后,圖像都會對應調整為影像Timage的大小,這種方法主要應用于窗口大小的變化。

   針對局部圖像的縮放,可采用第三種方法,創建一個Tbitmap,對它實現繪制,完成后利用StretchBlt函數將指定矩形內的圖像縮放后拷貝到標準應用窗口上,這種應用于局部圖像的大小變化,效果較好。

   在臺屏軟件的制作中,光字出現的很多,為避免大量圖元的繪制,可將背景圖復制后,進行顏色修改。動態實現時,利用透明技術,調用標準應用窗口的CopyRect函數,在指定矩形內實現光字變化。這種技術也可用于實現一些非凡圖形的動態變化。

  結束語

   C++ Builder已經獲得了廣泛應用。Windows SDK(Software Development Kit)又提供了強大的功能函數,通過Windows圖形設備接口(GDI),解決了虛擬臺屏的一些問題。這些方法已經在諸多的軟件編制中得到了應用,并取得了良好的效果。GDI技術的獨立于硬件的特點使它能夠在各種系統下已正常運行,在虛擬臺屏的軟件編制中滿足目前的圖像變化需要。 更多文章 更多內容請看C/C++技術專題  C/C++應用實例專題,或

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产主播喷水一区二区| 国内精品久久久久久久久| 亚洲精品一区久久久久久| 麻豆乱码国产一区二区三区| 国产一区二区三区视频| 国产+成+人+亚洲欧洲| 久久人人爽人人爽人人片亚洲| 午夜精品视频在线| 中文字幕在线观看日韩| 久久久久久久爱| 国产午夜精品美女视频明星a级| 亚洲人成在线免费观看| 日韩电影在线观看免费| www.亚洲一二| 免费91在线视频| 最近的2019中文字幕免费一页| 国产亚洲一区精品| 国产精品成熟老女人| 国产主播在线一区| 久久久久亚洲精品成人网小说| 午夜精品久久久久久久白皮肤| 欧美精品videossex88| 91精品视频免费观看| 欧美在线精品免播放器视频| 久久手机免费视频| 日本成人激情视频| 91九色精品视频| 国产成人精品一区二区| 亚洲丝袜在线视频| 在线不卡国产精品| 久久久国产一区二区| 国产日韩av高清| 在线日韩欧美视频| 国产精品久久久久久av福利| 国产日韩av在线| 亚洲影视中文字幕| 尤物九九久久国产精品的特点| 国产成人av网| 日本人成精品视频在线| 亚洲专区国产精品| 亚洲伊人成综合成人网| 国产精品99久久久久久久久久久久| 欧美一性一乱一交一视频| 久久精品视频播放| 91精品国产成人| 久久人人爽人人爽爽久久| 欧美激情在线观看| 国产精品久久久久一区二区| 美日韩在线视频| 国产一区二区三区高清在线观看| 亚洲精品黄网在线观看| 亚洲精品91美女久久久久久久| 粉嫩老牛aⅴ一区二区三区| 国产精品99久久久久久白浆小说| 日日噜噜噜夜夜爽亚洲精品| 亚洲欧美在线第一页| 欧美日韩国产在线| 国内精品小视频| 欧美性xxxxx极品娇小| 久久久久久欧美| 欧美国产精品日韩| 久久精品国产成人| 亚洲免费一在线| 欧美电影在线免费观看网站| 亚洲高清免费观看高清完整版| 国产丝袜一区二区三区| xxxxx成人.com| 亚洲专区在线视频| 少妇激情综合网| 中文字幕亚洲精品| 国产色视频一区| 欧美成人激情图片网| 91在线精品视频| 欧美乱妇40p| 97精品国产97久久久久久| 国产精品99久久久久久白浆小说| 日本精品久久中文字幕佐佐木| 欧美视频中文在线看| 日韩av网站在线| 日韩精品中文字幕久久臀| 成人激情综合网| 国产精品入口尤物| 欧美性受xxxx白人性爽| 欧美极品美女电影一区| 精品国产成人在线| 成人在线免费观看视视频| 欧美一级电影久久| 不用播放器成人网| 国产偷亚洲偷欧美偷精品| 欧美高清在线观看| 成人女保姆的销魂服务| 欧美日韩国产中文精品字幕自在自线| 一个色综合导航| 国产精品扒开腿做| 韩国视频理论视频久久| 中国日韩欧美久久久久久久久| 亚洲尤物视频网| 国产精品成人一区二区| 另类美女黄大片| 亚洲国产精品va在线看黑人动漫| 久久69精品久久久久久国产越南| 日韩中文字幕视频| 国产成人一区二区三区小说| 欧美高清性猛交| 久国内精品在线| 久久成人国产精品| 日韩亚洲欧美中文在线| 久久久久国产精品www| 高清一区二区三区四区五区| 欧美三级欧美成人高清www| 亚洲国模精品私拍| 91亚洲精品在线| 一区二区成人av| 九九久久久久99精品| 97视频在线观看免费| 国产精品久久久久久久久久免费| 综合av色偷偷网| 日韩国产欧美精品一区二区三区| 中文字幕日本欧美| 欧美老女人性视频| 亚洲色图av在线| 国产精品一久久香蕉国产线看观看| 91亚洲国产成人精品性色| 欧洲美女免费图片一区| 欧美中文字幕在线观看| 久久免费视频在线观看| 姬川优奈aav一区二区| 亚洲精品v天堂中文字幕| 亚洲美女中文字幕| 亚洲a∨日韩av高清在线观看| 国产精品久久久久999| 欧美激情中文字幕乱码免费| 色综合久综合久久综合久鬼88| 国产一区在线播放| 中文字幕日韩精品在线观看| 日本久久久久久久| 国产亚洲一区二区精品| 欧美一级片久久久久久久| 国产啪精品视频网站| 国产网站欧美日韩免费精品在线观看| 久久久国产精彩视频美女艺术照福利| 欧美激情xxxx性bbbb| 欧美尺度大的性做爰视频| 亚洲福利视频网站| 亚洲精品videossex少妇| 中文日韩在线视频| 午夜精品美女自拍福到在线| 欧美激情欧美狂野欧美精品| 91精品视频在线免费观看| 日韩av在线免费观看| 一区二区av在线| 国产亚洲人成网站在线观看| 亚洲色图50p| 精品无人区太爽高潮在线播放| 久久久久久久激情视频| 亚洲丁香婷深爱综合| 欧美一区三区三区高中清蜜桃| 裸体女人亚洲精品一区| 这里只有精品久久| 亚洲第一av在线| 国产综合在线观看视频| 97视频人免费观看| 色综合久久中文字幕综合网小说| 国产精品91久久久|