亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 如何在ucgui中實現窗體半透明效果.txt

?? uCGUI中實現窗體半透明效果應用的例子。
?? TXT
字號:
uC/GUI系統中的窗體可以實全透明效果,但是無法實現半透明效果。 

  經過一天的實驗,經于實現了窗體的半透明效果,與大家分享 

  怎么實現半透明效果呢?先考慮原理。 

  半透明原理: 

  假設LCD是256色的。顏色格式為332(RGB) 

  顯存中的每一個字節的數據對應一個象素點。 

  在數據寫入顯存之前,讀取相應相素點值,然后與新的數據按一定的規則混合之后,再寫入相應像素點的顯存。 

  這樣主要問題關鍵是混合算法。 

  混合算法目前在游戲上常用到的算法是AlphaBlend。計算公式如下 

  假設一幅圖象是A,另一幅透明的圖象是B,那么透過B去看A,看上去的圖象C就是B和A的混合圖象,設B圖象的透明度為alpha(取值為0-1,1為完全透明,0為完全不透明),Alpha混合公式如下: 

  R(C)=(1-alpha)*R(B)+alpha*R(A) 

  G(C)=(1-alpha)*G(B)+alpha*G(A) 

  B(C)=(1-alpha)*B(B)+alpha*B(A) 

  R(x)、G(x)、B(x)分別指顏色x的RGB分量原色值。從上面的公式可以知道,Alpha其實是一個決定混合透明度的數值。應用Alpha混合技術,可以實現游戲中的許多特效,比如火光、煙霧、陰影、動態光源等半透明效果。 

  原理和混合算法都清楚知后,下來考慮在uC/GUI這樣的環境下如何實現。 

  再考慮一個問題,uC/GUI系統分為好幾個層面。簡單地可以歸結為: 

  1、硬件驅動層 

  2、基本2D圖形庫 

  3、窗體 

  可以想象層次越高,涉及的內容越多,修改的工作量就越大。 

  如果想修改最少的代碼實現半透明功能,最好在硬件驅動層找切入口。 

  分析一下硬件驅動層的壞境 

  在硬件驅動層中我找到了一個宏定義 

  LCD_WRITE_MEM(Off,data) *((U8*)(DC+(((U32)(Off)))))=(data) 

  從文檔可以看到該宏定義的功能就是向顯存寫入像素點的值。 

  那就修改這個宏定義吧,把剛才說的算法加入該宏定義,流程如下: 

  a、讀取相應象素點值 

  b、與新的象素點值按照混合算法轉換。 

  c、將轉換結果寫入顯存對應位置。 

  然后進行簡單的測試。 

  如下 

  /設置透明度為0,完全不透明,先執行清屏。 

  GUI_SetBkColor(GUI_WHITE); 

  GUI_SetColor(GUI_WHITE); 

  GUI_Clear(); 

  /填充一個方框 

  GUI_SetColor(GUI_RED); 

  GUI_FillRect(0,0,80,30); 

  *****這里設置透明度為80透明之后再執行 

  GUI_SetColor(GUI_GREEN); 

  GUI_FillRect(50,5,200,30); 
 
  這時候觀察兩個方框疊交的部分和其它部份,可以看到透明效果已經出現了。 

  到這個時候可以證明,你的思想和修改是正確的。 

  接下來的事情是如何把這個實現效果跟GUI系統完美結合起來。 

  uC/GUI代碼這么多,如何下手? 

  有一個核心數據結構你必須知道。GUI_CONTEXT 

typedef struct { 
/* Variables in LCD module */ 
LCD_COLORINDEX_UNION LCD; 
LCD_RECT ClipRect; 
U8 DrawMode; 
U8 SelLayer; 
U8 TextStyle; 
U8 TransPara; 
/* Variables in GL module */ 
GUI_RECT* pClipRect_HL; /* High level clip rectangle ... Speed optimization so drawing routines can optimize */ 
U8 PenSize; 
U8 PenShape; 
U8 LineStyle; 
U8 FillStyle; 
/* Variables in GUICHAR module */ 
const GUI_FONT GUI_UNI_PTR * pAFont; 
const GUI_UC_ENC_APILIST * pUC_API; /* Unicode encoding API */ 
I16P LBorder; 
I16P DispPosX, DispPosY; 
I16P DrawPosX, DrawPosY; 
I16P TextMode, TextAlign; 
GUI_COLOR Color, BkColor; /* Required only when changing devices and for speed opt (caching) */ 
/* Variables in WM module */ 
#if GUI_WINSUPPORT 
const GUI_RECT* WM__pUserClipRect; 
GUI_HWIN hAWin; 
int xOff, yOff; 
#endif 
/* Variables in MEMDEV module (with memory devices only) */ 
#if GUI_SUPPORT_DEVICES 
const tLCDDEV_APIList* pDeviceAPI; /* function pointers only */ 
GUI_HMEM hDevData; 
GUI_RECT ClipRectPrev; 
#endif 
/* Variables in Anitaliasing module */ 
#if GUI_SUPPORT_AA 
const tLCD_HL_APIList* pLCD_HL; /* Required to reroute drawing (HLine & Pixel) to the AA module */ 
U8 AA_Factor; 
U8 AA_HiResEnable; 
#endif 
} GUI_CONTEXT; 

  認真分析一下它。你會發現它包含了整個系統作圖的最基本信息。而且這個結構體所聲明的變量GUI_Context也是硬件作圖層(硬件驅動層)所唯一依賴的變量。 

  在結構體中發現,需要增加透明度信息。 

  于是在結構體中增加一條: 

  U8 BlendPara;/混合算法參數Alpha; 

  現在來一個情景分析。 

  1、在畫圖前設置該變量值。0---100之間。 

  2、在LCD_WRITE_MEM時使用它。這樣半透明和透明效果就都實現了。 

  用2D圖形庫作圖測試確實能實現半透明效果。 

  再測試窗體時你會發現一個問題。在基于WM_Window的所有控件上使作半透明效果會出現問題: 

  在反復刷新(即反復產生WM_PAINT)消息時,該窗體的顏色一直在變量,而且由淺及深或由深及淺反復變化。 

  我們的話題是“實現窗體的半透明效果”。這并不是我們的最終目標,而是目標的第一步。

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲成人中文在线| 国产精品麻豆网站| 欧美日韩国产a| 日本道免费精品一区二区三区| 成人免费高清视频在线观看| 精品在线播放免费| 国产在线不卡一区| 国产91对白在线观看九色| 高清在线观看日韩| 99久久久久久| 欧美日韩一区二区在线视频| 欧美久久久一区| 欧美v日韩v国产v| 中文字幕制服丝袜一区二区三区 | 欧美电影免费观看高清完整版在线 | 亚洲免费成人av| 亚洲国产精品久久久男人的天堂| 性久久久久久久| 经典三级一区二区| 国产成a人亚洲| 欧美日韩中文国产| 久久久亚洲高清| 亚洲三级免费观看| 日本午夜一本久久久综合| 国产麻豆精品theporn| 色综合天天视频在线观看 | 国产乱人伦偷精品视频不卡| 粉嫩欧美一区二区三区高清影视 | 久久综合综合久久综合| 国产成人免费在线| 欧美性猛片xxxx免费看久爱| 欧美大胆一级视频| ●精品国产综合乱码久久久久 | 国产麻豆视频一区二区| 色综合中文字幕国产 | 色综合久久中文综合久久牛| 欧美人妖巨大在线| 国产精品伦一区二区三级视频| 一区二区免费在线| 成人在线综合网| 日韩片之四级片| 亚洲欧美另类久久久精品| 久久91精品国产91久久小草| 91麻豆国产在线观看| 精品电影一区二区| 五月综合激情网| 91美女片黄在线| 国产日本欧洲亚洲| 久久精品免费看| 欧美久久久一区| 亚洲自拍偷拍麻豆| www.66久久| 精品国产乱码久久久久久蜜臀| 亚洲一区中文在线| 色综合天天综合网天天狠天天 | 风间由美性色一区二区三区| 欧美精品乱码久久久久久按摩| 中文字幕一区二区在线观看| 韩国av一区二区| 欧美一区二区三区视频免费播放| 亚洲色大成网站www久久九九| 国产美女视频91| 精品国产区一区| 麻豆精品在线播放| 日韩视频在线一区二区| 日本中文字幕一区| 欧美精品日韩一区| 日韩1区2区日韩1区2区| 欧美精品第一页| 天涯成人国产亚洲精品一区av| 91久久人澡人人添人人爽欧美| 日韩伦理电影网| 色av一区二区| 亚洲国产精品麻豆| 欧美日韩精品是欧美日韩精品| 亚洲国产精品影院| 欧美日韩免费高清一区色橹橹| 亚洲一区二区三区小说| 欧美中文字幕一区| 日韩国产欧美在线播放| 欧美一区二区三区免费在线看 | 中文字幕日韩一区| 91丝袜美女网| 亚洲午夜久久久久久久久久久 | 一区二区三区高清在线| 欧美午夜一区二区| 日本成人在线不卡视频| 日韩欧美专区在线| 国产一区在线观看视频| 国产精品国产三级国产专播品爱网| 成人不卡免费av| 夜夜亚洲天天久久| 91精品国产综合久久精品性色| 狠狠色综合日日| 中文字幕在线不卡一区| 欧美日韩成人一区| 紧缚奴在线一区二区三区| 中文字幕电影一区| 欧美色精品在线视频| 看电视剧不卡顿的网站| 中文字幕不卡在线| 9191成人精品久久| 福利91精品一区二区三区| 一二三四区精品视频| 欧美变态tickle挠乳网站| 福利一区二区在线观看| 天天av天天翘天天综合网| 精品粉嫩超白一线天av| 91豆麻精品91久久久久久| 美女高潮久久久| 亚洲免费在线视频| 精品对白一区国产伦| 91成人在线免费观看| 国产乱子伦视频一区二区三区| 一区二区三区美女视频| 国产日韩欧美不卡在线| 9191国产精品| 色狠狠桃花综合| 国产成人午夜精品5599| 男女男精品网站| 亚洲免费在线视频| 欧美韩国一区二区| 欧美一区二区三区在线看| 一本色道**综合亚洲精品蜜桃冫| 极品少妇xxxx偷拍精品少妇| 一区二区成人在线| 国产女主播一区| 久久综合九色综合久久久精品综合| 色婷婷av一区二区三区之一色屋| 国产经典欧美精品| 激情丁香综合五月| 久久精品国产第一区二区三区| 亚洲人成7777| 日韩毛片精品高清免费| 欧美国产日韩a欧美在线观看| 精品国产乱码久久久久久夜甘婷婷| 欧美曰成人黄网| 色综合久久久久综合| 不卡的av网站| 国产成a人亚洲| 国产成人av资源| 国产精品资源在线看| 激情六月婷婷综合| 美女脱光内衣内裤视频久久网站 | 欧美日韩在线播放三区四区| 日本韩国欧美三级| 欧洲av一区二区嗯嗯嗯啊| 91日韩一区二区三区| 成人sese在线| 色综合咪咪久久| 欧美在线999| 欧美夫妻性生活| 欧美一区二区女人| 欧美一级专区免费大片| 91精品国产美女浴室洗澡无遮挡| 欧美区视频在线观看| 欧美午夜精品一区二区蜜桃| 91久久国产最好的精华液| 在线观看国产日韩| 欧美三级电影在线观看| 欧美精品久久一区| 日韩情涩欧美日韩视频| 久久婷婷久久一区二区三区| 久久久久久久精| 中文字幕色av一区二区三区| 一区二区三区四区在线播放 | 久久av资源站| 国产麻豆视频一区| 99精品久久99久久久久| 91电影在线观看| 欧美一级二级在线观看| 国产欧美一区二区精品性| 国产精品久久久久天堂| 一区二区三区在线看| 蜜臀精品久久久久久蜜臀| 国产在线精品不卡| 91美女蜜桃在线| 日韩一区二区精品在线观看| 国产日韩精品一区二区三区| 亚洲激情欧美激情| 久久国产综合精品| 99久久精品国产毛片| 91精品国产综合久久婷婷香蕉| 国产亚洲欧美在线| 亚洲国产视频在线| 国产99久久久久| 欧美日韩一区二区电影| 2021中文字幕一区亚洲| 亚洲免费观看高清完整| 久久av中文字幕片| 欧美性受xxxx| www国产成人| 天堂成人免费av电影一区| 国产成人av自拍| 欧美一区二区三区在线看| 国产精品热久久久久夜色精品三区| 亚洲午夜精品在线| 成人激情动漫在线观看| 在线观看91精品国产入口| 国产亚洲va综合人人澡精品|