亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于VC的船舶監(jiān)控界面提示信息半透明化實現(xiàn)

        2014-08-17 01:45:54張曉慧徐向文姚恒傳
        關鍵詞:句柄半透明透明度

        張曉慧, 徐向文, 姚恒傳

        (1.上海船舶運輸科學研究所 艦船自動化分所,上海 200135; 2.蘇州杜科設備工程有限公司,江蘇 昆山 215300)

        0 引 言

        隨著計算機技術的發(fā)展,監(jiān)控系統(tǒng)對界面顯示的要求也從簡單的文字顯示轉化為以圖形界面為主,顯示風格從簡單的WINDOWS灰白界面向多種顯示基色發(fā)展,對顯示內(nèi)容也提出了更高的要求。由于通用WINDOWS提示在顯示時會擋住一部分正常顯示界面,這樣就有用戶提出了在提示窗進行半透明顯示的要求。

        1 GDI+圖形編程技術

        圖形設備接口+(GraphicsDeviceInterfacePlus,GDI+)是微軟的.NET Framework類庫的組成部分,用于圖形編程。在微軟以前的開發(fā)工具中,使用GDI進行圖形編程,相當復雜,而GDI+是GDI的包裝器,簡化了圖形程序設計任務。GDI+與GDI的不同之處在于不僅提供了很多新功能,如像素消除鋸齒技術,漸變畫筆,變形和矩陣對象,獨立的路徑對象、基數(shù)樣條、對多圖像格式的支持和Alpha混合等;更重要的是它改變了編程模型,GDI是基于句柄的而GDI+是基于對象模型的。使用GDI+,只需創(chuàng)建1個Graphics對象,然后以熟悉的面向對象樣式調(diào)用其方法,而沒有必要去考慮句柄和設備環(huán)境(DeviceContext)的概念。設備環(huán)境位于GDI的核心,Graphics對象也位于GDI+核心,其作用相似, 但在使用設備環(huán)境的基于句柄的編程模式和使用Graphics對象的基于面向對象的編程模型之間,存在一些基本的差異。Graphics對象(和設備環(huán)境一樣)與屏幕上特定的窗口關聯(lián),并具有指定如何繪制項目的屬性(如SmoothingMode),但是,Graphics對象不受鋼筆、畫筆、路徑、圖像或字體的約束,這與設備環(huán)境不同,例如,使用設備環(huán)境繪制線條之前,必須先調(diào)用SelectObject以使鋼筆對象和設備環(huán)境關聯(lián),將鋼筆選入設備環(huán)境中。在設備環(huán)境中繪制的所有線條均使用該鋼筆(只有一支畫筆是可以使用的),直到選擇另一支不同的鋼筆為止。而在GDI+中,將Pen對象作為參數(shù)傳遞給Graphics類的DrawLine方法,可以在一系列DrawLine調(diào)用的每個調(diào)用中使用不同的Pen對象,而不必使給定的Pen對象和Graphics對象關聯(lián)。也就是說,在GDI+中,可以同時使用多個畫筆進行不同的繪圖操作[1]。

        2 步驟及代碼

        要實現(xiàn)透明顯示,可在VC(Microsoft Visual C++)開發(fā)環(huán)境下使用GDI+技術完成。

        2.1 在VC6.0版本下使用

        由于VC6.0 本身并不帶有GDI+函數(shù)庫,需要下載GDI+函數(shù)庫,在工程目錄下建立GdiFiles目錄,將下載的GDI+文件拷貝到該目錄下,并使工程包含GdiFilesGdiPlus.lib庫文件,包含gdiplus.h頭文件,并為GDI+申請using namespace Gdiplus。這樣就能在VC6.0中使用GDI+。

        在VC2010中由于開發(fā)工具已包含GDI+,因此可直接使用。

        2.2 開發(fā)步驟

        在使用GDI+庫前必須先向系統(tǒng)注冊,使用語句為:

        Gdiplus::GdiplusStartupInput gdiplusStartupInput

        然后初始化GDI+相關句柄,使用語句為:

        Gdiplus::GdiplusStartup(&m_gdiplusToken, &gdiplusStartupInput, NULL)

        在程序退出前必須注銷GDI+,使用語句為:

        Gdiplus::GdiplusShutdown(m_gdiplusToken)

        使用GDI+庫,建立與顯示關聯(lián)的graphics指針

        Graphics graphics(pDC->m_hDC).

        設置半透明顯示的底色

        COLORREF col = RGB(250,250,250)

        設置半透明顯示的文字色

        COLORREF coltxt = RGB(0,0,0)

        設置半透明度

        int fillair=150;(透明度范圍在0-255,值越小透明度越高)

        建立半透明畫刷

        SolidBrush brush(Color(Color::MakeARGB(BYTE(fillair), GetRValue(col), GetGValue(col), GetBValue(col)))) 創(chuàng)建筆刷,第一項是透明度,后三項是RGB值

        建立半透明區(qū)域 Rect rcFill(25,25,200,100),其參數(shù)為left,top,Width,Height

        顯示半透明區(qū)域 graphics.FillRectangle(&brush, rcFill)

        建立半透明畫刷

        SolidBrush brush1(Color(Color::MakeARGB(BYTE(fillair), GetRValue(coltxt), GetGValue(coltxt), GetBValue(coltxt)))) 創(chuàng)建一個筆刷,第一項是透明度,后三項是RGB值

        選擇顯示文字字體

        FontFamily fontFamily(L"Latha")

        設置字體大小和顯示風格

        Font font(&fontFamily,0.15,FontStyleRegular,UnitInch)

        設置顯示位置

        PointF pointF(25,25)

        顯示提示信息

        graphics.DrawString(L"測點信息:",-1,&font,pointF,&brush1)

        pointF.Y=pointF.Y+20;

        graphics.DrawString(L"1#發(fā)電機曲軸箱進口滑油溫度",-1,&font,pointF,&brush1);

        pointF.Y=pointF.Y+20;

        graphics.DrawString(L"安裝部位:",-1,&font,pointF,&brush1);

        pointF.Y=pointF.Y+20;

        graphics.DrawString(L"1#電站1#發(fā)電機曲軸",-1,&font,pointF,&brush1);

        4 效果檢驗

        按照上述步驟進行編程,執(zhí)行效果見圖1。

        圖1

        5 結 語

        完成以上步驟,就能實現(xiàn)提示窗體的半透明顯示,并且顯示的透明度還可自由調(diào)節(jié)。但在實際應用中還會遇到以下問題:由于半透明顯示時GDI系統(tǒng)將會取得該區(qū)域屏幕顯存,如果用戶定時對屏幕進行畫屏顯示操作,由于獲取的是上次已顯示的半透明顯存,疊加后會產(chǎn)生顯示透明度逐漸加深的情況。解決這一問題的方法是使用顯示雙緩沖[3]的方法。雙緩沖就是除了在屏幕上有圖形進行顯示以外,在內(nèi)存中也有圖形在繪制。可以把要顯示的圖形先在內(nèi)存中繪制好,然后再一次性的將內(nèi)存中的圖形按照一個點一個點地覆蓋到屏幕上。這樣在內(nèi)存中繪圖時,由于內(nèi)存中的圖形未進行半透明顯示,所以可以避免疊加效果。

        參考文獻:

        [1] 李順亮,王新輝,鐘碧良.應用GDI+和C#開發(fā)船舶壓載水監(jiān)控系統(tǒng)控件[J].廣州航海高等??茖W校學報,2012,20(1):4-6.

        [2] 於文雪,李松毅,羅立民.基于Windows GDI的圖形圖像處理探討[J].計算機工程,2003,29(2):270-272.

        [3] 韓麗娜,石昊蘇.使用雙緩存來解決GDI下的閃爍問題[J].計算機工程與設計,2006,27(17):3257-3260.

        猜你喜歡
        句柄半透明透明度
        月球上的半透明玻璃珠
        大自然探索(2022年5期)2022-07-11 03:10:33
        濕化學法合成Ba(Mg(1-x)/3ZrxTa2(1-x)/3)O3納米粉體及半透明陶瓷的制備
        陶瓷學報(2019年6期)2019-10-27 01:18:40
        中國FTA中的透明度原則
        消費導刊(2018年10期)2018-08-20 02:56:52
        高校圖書館持久標識符應用研究
        半透明三維物體表面光澤真實感實時渲染方法
        編譯程序語法分析句柄問題分析與探討
        最愛透明、半透明
        女友·花園(2015年7期)2015-05-30 10:48:04
        股權結構與信息透明度相關性的實證研究
        提高上市公司會計信息透明度的對策
        提高基金會透明度 促進慈善事業(yè)發(fā)展
        精品久久有码中文字幕| 最新国产美女一区二区三区| 日本在线免费一区二区三区| 国产自拍精品视频免费| 中文字幕aⅴ人妻一区二区| 国产精品白浆一区二小说| 国产福利美女小视频| 亚洲24小时免费视频| 草色噜噜噜av在线观看香蕉| 国产成人vr精品a视频| 久久久久久久综合日本| 日本啪啪视频一区二区| 精品av熟女一区二区偷窥海滩| 五月天激情婷婷婷久久| 最新欧美一级视频| av网站免费观看入口| 国产欧美日韩精品丝袜高跟鞋| 97免费人妻在线视频| 国产经典免费视频在线观看 | 国产精品98视频全部国产| 亚洲中文中文字幕乱码| 国产又大又硬又粗| 久久精品夜夜夜夜夜久久| 国产成人AⅤ| 国产精品一区二区黄色| a级毛片无码久久精品免费| 国产一区二区激情对白在线| 亚洲av午夜福利一区二区国产| 亚洲成在人线视av| 国产精品白浆在线观看无码专区| 国产h视频在线观看网站免费 | 99精品一区二区三区无码吞精| 久久精品视频91| 精品一区二区三区国产av | 乌克兰粉嫩xxx极品hd| 69天堂国产在线精品观看| 97女厕偷拍一区二区三区| 少妇人妻中文字幕hd| 亚洲永久无码动态图| 人妻风韵犹存av中文字幕| 激情综合五月|