999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于VC的船舶監控界面顯示分辨率自適應方法

2016-09-07 08:56:09姚恒傳張曉慧
關鍵詞:界面船舶方法

姚恒傳,張曉慧

(上海船舶運輸科學研究所 航運技術與安全國家重點實驗室,上海 200135;2.蘇州中韓杜可設備工程有限公司,江蘇 昆山 215300)

?

基于VC的船舶監控界面顯示分辨率自適應方法

姚恒傳1,張曉慧2

(上海船舶運輸科學研究所 航運技術與安全國家重點實驗室,上海 200135;2.蘇州中韓杜可設備工程有限公司,江蘇 昆山 215300)

使用Visual C++編程語言開發工具,在某船舶監控界面上實現監控軟件對顯示分辨率的自適應。分析用戶顯示器分辨率與監控軟件開發分辨率不同時產生的不良后果,從而將適應性原理應用于軟件設計中。重點介紹在VC 6.0版本下顯示分辨率自適應系統的開發步驟,對實際應用中遇到的問題進行解決,設計并實現能夠自適應顯示分辨率的監控界面。該研究對于分辨率自適應技術在船舶監控界面設計中的推廣和應用具有一定意義。

監控界面;自適應;分辨率

0 引 言

隨著計算機技術不斷發展,計算機顯示器的更新換代速度逐漸加快、屏幕顯示分辨率不斷提高。監控軟件使用平臺的多樣性使得監控軟件需要在各種顯示分辨率不同的顯示器上顯示。然而,監控界面的開發是在某一特定的分辨率下進行的,若用戶分辨率與開發分辨率不同,則會造成監控界面顯示比例失調,甚至部分監控界面無法顯示。對此,提出在固定分辨率下開發的監控軟件須能適應不同顯示分辨率的要求,以減少系統開發的復雜性、縮短軟件開發周期。下面介紹一種監控軟件能自適應顯示分辨率的方法。

1 顯示分辨率自適應概念

顯示分辨率可用來確定計算機屏幕上所顯示信息的多少,以水平像素和垂直像素來衡量。顯示分辨率低時,屏幕上顯示的像素少,但尺寸較大;顯示分辨率高時,屏幕上顯示的像素多,但尺寸較小。

自適應指的是系統對環境變化的協調行為。當環境條件發生變化時,系統能主動改變自己的策略和行為,從而在新的環境下繼續發揮作用。復雜自適應系統(Complex Adaptive System,CAS)理論就是現代系統科學的1個研究方向。該理論強調從發展和強化的角度看待事物,強調承認、重視各類主體的主動性和適應性。從各種主體的相互作用及其與環境的相互作用的角度去理解、處理、管理和控制相關問題。

顯示分辨率自適應是指可以自動識別顯示分辨率并作出相應調整,使船舶監控界面能夠在各種顯示分辨率下完整、清晰、合理地顯示出來。

2 實現方法的研究比較

實現監控軟件界面顯示分辨率自適應的方法可以有多種,由參考文獻[1]和文獻[3]總結出一種方法,即:首先設定固定的開發分辨率,然后根據顯示分辨率重新計算顯示界面上各個部件的顯示位置和顯示大小,從而實現對顯示分辨率的適應。該方法的優點是可以充分利用已有的各種控件,方便開發;缺點是必須在運行中重新計算所有顯示部件的顯示位置和大小,這在顯示界面復雜、數量繁多的情況下會大大增加程序的復雜度。因此,該方法對于監控界面復雜且數量繁多的船舶監控界面并不適用,現就另一種方法的實現進行詳細介紹。

對監控軟件的顯示系統進行分析后認為,各個顯示界面可歸結為各種顯示圖案,這樣顯示界面對顯示分辨率的適應就可以轉化為顯示圖案對顯示界面的適應,工作的復雜度也就隨之大大降低了。該方法的核心思想是將需要顯示的界面畫在后備顯示緩沖中,然后將其中的內容作為圖片,根據顯示分辨率的大小粘貼到顯示緩沖中,從而實現界面對分辨率的自適應。該方法的優點是可以完全脫離分辨率要求開發軟件,程序的復雜度不會隨顯示界面的數量和復雜度的增加而增大;缺點是所有顯示的內容都必須先畫在后備顯示緩沖中,而相當部分的Windows控件并不提供此功能,需要開發者重新改寫控件和控件的消息處理,這會增加一定的工作量。但該項工作只要進行一次即可成為通用控件,并被所有用此方法的工程采用。

3 實現步驟及代碼

3.1實現方法

要實現監控界面對顯示分辨率的自適應,必須首先解決以下4個問題:

1) 獲取當前顯示分辨率。

在VC中,系統提供了應用程序編程接口(Application Program Interface,API)函數GetSystemMetrics,可獲得當前顯示的分辨率大小。具體用法為:

(1) 當前顯示的寬(點素)=GetSystemMetrics(SM_CXSCREEN);

(2) 當前顯示的高 (點素)=GetSystemMetrics(SM_CYSCREEN)。

通過調用此函數即可在運行中獲得當前的顯示分辨率。

2) 如何實現顯示雙緩沖。

實現雙緩沖顯示技術需要以下步驟:

(1) 定義一個顯示設備指針CDC *m_pDC_memory.

(2) 創建內存兼容設備上下文:

m_pDC_memory=new CDC();

m_pDC_memory->CreateCompatibleDC(pDC);

(3) 創建內存兼容畫布:

CBitmap bitmap;

bitmap.CreateCompatibleBitmap(pDC,xRange,yRange);

(4) 將畫布選入內存設備上下文:

CBitmap *m_pOld_pDC;

m_pOld_pDC =m_pDC_memory->SelectObject(&bitmap);

(5) 在析構函數中:

m_pDC_memory->SelectObject(m_pOld_pDC);

delete m_pDC_memory;

3) 將后備顯示緩沖中的內容根據顯示分辨率的大小粘貼到顯示緩沖中。

要將后備顯示緩沖中的內容根據顯示分辨率的大小粘貼到顯示緩沖中可使用函數strechblt:

pDC->StrechBlt(顯示位置X,顯示位置Y,顯示寬,顯示高,m_pDC_memory, 后備顯示緩沖顯示位置X,后備顯示緩沖顯示位置Y,固定顯示寬,固定顯示高, 后備顯示緩沖,SRCCOPY);

使用該函數會產生圖像失真現象,可通過SetStretchBitMode(pDC->hDC,STRETCH_HALFTONE)改變圖像伸展模式來消除。

4) 根據新的分辨率響應鼠標消息。

由于界面自適應顯示分辨率后顯示內容會產生一定的拉伸,而鼠標是通過系統中斷在屏幕上顯示的,因此會產生鼠標位置與軟件中控件位置不符的現象,必須通過修正鼠標位置來重新定位。通過改寫鼠標事件的方法來實現:

POINT UsePoint;//修正后的鼠標位置

UsePoint.x=(鼠標位置.x/固定顯示寬)*顯示分辨率寬

UsePoint.y=(鼠標位置.y/固定顯示高)*顯示分辨率高

重新響應鼠標事件。

3.2開發步驟

1) 定義固定顯示分辨率:

int m_nConstWidth=1 600;

int m_nConstHigh=1 200;

2) 獲取屏幕分辨率:

int m_nSreenWidth= GetSystemMetrics(SM_CXSCREEN);

int m_nSreenHigh= GetSystemMetrics(SM_CYSCREEN);

3) 建立后備顯示緩沖CDC *m_pDC_memory.

m_pDC_memory=new CDC();

m_pDC_memory->CreateCompatibleDC(pDC);

CBitmap bitmap;

bitmap.CreateCompatibleBitmap(pDC,xRange,yRange);

CBitmap *m_pOld_pDC;

m_pOld_pDC =m_pDC_memory->SelectObject(&bitmap);

4) 定義將界面畫在后備顯示緩沖函數:DrawScreen(CDC *pDC);

函數調用時使用后備顯示緩沖:DrawScreen(m_pDC_memory);

5) 定義屏幕顯示函數:

void CopyMemoryScreen()

{

CDC *pDC;

SetStretchBitMode(pDC->hDC,STRETCH_HALFTONE);

pDC->StrechBlt(0,0,m_nScreenWidth,m_nScreenHigh,

m_pDC_memory,0,0,m_nConstWidth,m_nConstHigh,SRCOPY);

}

6) 改寫鼠標事件:

OnLButtonDown(UNIT nFlag,CPoint point)

{

POINT UsePoint;

UsePoint.x=(point.x*m_nConstWidth)/m_nScreenWidth;

UsePoint.y=(point.y*m_nConstHigh)/m_nScreenHigh;

DoLButtonDown(UsePoint);//響應鼠標右鍵按下

}

其他所有鼠標事件都要改寫。

4 效果檢驗

利用該種方法可自動根據用戶的顯示分辨率調整用戶界面,適應不同分辨率的要求,可自動識別顯示分辨率,并作出相應調整,使船舶監控界面能在各種顯示分辨率下完整、清晰、合理地顯示出來。按照上述步驟編程,在固定分辨率為1 600 Px×1 200 Px下執行效果見圖1~圖3。

圖1 屏幕分辨率為1 600 Px×1 200 Px下的執行效果

5 結 語

自適應顯示分辨率解決方法設計后的主要工作是對Windows控件和控件的消息處理進行重新改寫,雖然工作量會有所增加,但是該項工作只要進行一次即可成為通用控件而被所有用此方法的工程采用,因此認為這是值得的。運用該方法,即可實現監控軟件對顯示分辨率的自適應,同時能在各種顯示分辨率下做到完整、清晰顯示,使所開發的船舶監控系統用戶界面友好、操作方便更具競爭力。

此外,在該方法的基礎上配合TCP網絡通信技術,即可開發遠程桌面、遠程操控技術;同時,由于該方法對WINDOWS控件和鼠標響應進行了改寫,因此也為系統向非Windows擴展打下了一定基礎。

圖2 屏幕分辨率為800 Px×600 Px下的執行效果

圖3 屏幕分辨率為2 560 Px×1 400 Px下的執行效果

[1]暢暢.VC++實現自適應型對話框[J].電腦編程技巧與維護,2005(10):42-44.

[2]樊東燕. 基于Web頁面的瀏覽器分辨率自適應策略的探討[J].電腦開發與應用,2009,22(5):75.

[3]董靚瑜. PB環境中自適應分辨率窗口的設計與實現[J]. 浙江海洋學院學報:自然科學版,2007,26(2):230-233.

Design of Resolution-adaptive Ship Monitoring Interface with VC

ZHANG Xiaohui,YAO Hengchuan

(1.StateKeyLaboratoryofNavigationandSafetyTechnology,ShanghaiShip&ShippingResearchInstitute,Shanghai200135,China; 2.SuzhouChina-KoreaDOOCHEquipmentEngineeringCo.,Ltd,Suzhou215300,China)

The problem of mismatch between the monitor resolution and that software designed for display is investigated and the C++ method to develop monitoring software which automatically adjusts the display resolution according to that of a monitor is introduced. The process of developing such software with VC6.0 is given, and some problems experienced during the development are described particularly.

Monitoring interface; self-adaptation; screen resolution

2015-10-28

姚恒傳(1985—),男,山東濰坊人,助理工程師,主要從事工程管理工作。

1674-5949(2016)01-044-05

U665.2

A

猜你喜歡
界面船舶方法
計算流體力學在船舶操縱運動仿真中的應用
《船舶》2022 年度征訂啟事
船舶(2021年4期)2021-09-07 17:32:22
國企黨委前置研究的“四個界面”
當代陜西(2020年13期)2020-08-24 08:22:02
船舶!請加速
基于FANUC PICTURE的虛擬軸坐標顯示界面開發方法研究
人機交互界面發展趨勢研究
用對方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
手機界面中圖形符號的發展趨向
新聞傳播(2015年11期)2015-07-18 11:15:04
捕魚
主站蜘蛛池模板: 亚洲日本中文字幕乱码中文| 亚洲欧美在线看片AI| 老司机午夜精品网站在线观看| 国产美女一级毛片| 日韩国产综合精选| 国产在线视频福利资源站| 亚洲日韩久久综合中文字幕| 男女男免费视频网站国产| 精品久久久久久成人AV| 亚洲天堂久久久| 色AV色 综合网站| 91口爆吞精国产对白第三集| 欧美亚洲国产日韩电影在线| 成人字幕网视频在线观看| 日韩国产高清无码| 亚洲国产清纯| 久久综合五月| 亚洲a级在线观看| 亚洲清纯自偷自拍另类专区| 91视频精品| 国产探花在线视频| а∨天堂一区中文字幕| 无码国产伊人| 国产偷国产偷在线高清| 91亚瑟视频| 制服丝袜国产精品| 人人爽人人爽人人片| 欧美A级V片在线观看| 粗大猛烈进出高潮视频无码| 97国内精品久久久久不卡| 在线国产欧美| 另类欧美日韩| 丝袜亚洲综合| 久久精品一卡日本电影| 2021天堂在线亚洲精品专区| 国产精品浪潮Av| 欧美日本在线| 国产美女精品一区二区| 国产97区一区二区三区无码| 亚洲swag精品自拍一区| 亚洲无码精彩视频在线观看| 国产成人高清精品免费软件| 网友自拍视频精品区| 国产福利在线观看精品| 国产成人AV男人的天堂| 日本伊人色综合网| 视频二区亚洲精品| V一区无码内射国产| 91小视频在线观看免费版高清| 免费在线色| 四虎精品黑人视频| 国产亚洲精品自在线| 日韩av在线直播| 国产综合亚洲欧洲区精品无码| 激情网址在线观看| 国产亚洲精品无码专| 欧美精品伊人久久| 全部免费毛片免费播放| 国产午夜看片| 国产精品一区二区国产主播| 国产又黄又硬又粗| 日韩国产亚洲一区二区在线观看| 欧美啪啪一区| 成年A级毛片| 久久人午夜亚洲精品无码区| 这里只有精品免费视频| 99这里只有精品在线| 精品综合久久久久久97超人| 九色最新网址| 538国产视频| 欧美福利在线播放| 美女被操91视频| 在线看片免费人成视久网下载| 国产主播福利在线观看| av色爱 天堂网| 青草91视频免费观看| 久久99国产乱子伦精品免| 欧美色图第一页| 免费视频在线2021入口| 国内精品自在欧美一区| 精品五夜婷香蕉国产线看观看| 欧美视频免费一区二区三区 |