<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      跟我學做c#皮膚美化(七)----窗體換膚

      前言

            這個系列好久都沒有更新了,貌似上一篇還是在今年五月份發布的。呵呵,不感慨了,還是開始介紹今天的內容吧! 這里說明一下這次實現的換膚都是基于貼圖換膚的,并不可以像QQ那樣還可以調整色調甚至自定義圖片為背景。如果您已經有過這方面的經驗,下面的內容或許不一定適合你。另外如果您對本文有興趣請到最后下載源碼對照閱讀。如果您還沒有看過這個系列前續的文章請先參閱這里,本文的內容是在那幾篇的基礎上建立的!

            貼圖換膚就是用不同的圖片去畫不同的地方的背景,最后形成了界面的一個整體樣式外觀(自己這樣認為的,如有不對歡迎拍磚! )。只要我們將每個背景圖片的位置以及大小信息記錄下來,并在換膚的時候加載這些圖片和信息并將它們畫到背景上去就能實現換膚了。很簡單吧~~

            最終的效果圖:

      查看 skin
      換膚實現

            上面只是簡單說了一下換膚的“原理”,下面這個換膚流程圖或許能夠幫助您更好理解它:

      5 

      上面的這四個過程就對應了實際類中的四個主要方法:ReadIniFile,CaculatePartLocation,ReadBitmap和DrawBackground。我們一個一個來看:

      ReadIniFile

          這個方法主要用來讀取皮膚配置信息。 什么?不知道配置信息長啥樣?得了,那就給你看一眼吧。注釋的都很明白了,相信大家都明白了吧!我也就不羅嗦了(上次有人說我寫的太啰嗦,我是痛定思痛啊,呵呵)

      6

         這是個INI的配置文件,網上有很多方法教你怎么讀取和寫入INI了。我將它們封裝成了ReadIniValue和WriteIniValue方法。讀取出來的這些信息都放在各自的背景塊變量中。這里所說的背景塊就是前面一篇文章介紹到的將界面劃分的九個區域,如果您不了解可以看看這個系列的前一篇文章。一個背景塊就是一個類,這些類都繼承于partbase基類。partbase類中就定義了配置文件中對應的幾個變量和幾個方法,具體的可以到源代碼中查看這個類,不復雜。

      代碼

       

       

      CaculatePartLocation

         在這個方法中就是根據當前窗體的width和height,再加上讀取到的配置信息計算各個背景塊的大小和位置。請注意方法中計算的順序,先是左上角然后右上角最后中間。因為為了實現窗體的可縮放,中間的寬度是可變的。然后是左下方右下方,最后才是中間。中間的內容區域被我放了一個panel,其大小是可以變化的,具體的大小位置要看計算的結果。panel的另一個作用就是實現放在里面的控件的布局更好設置而不必關心上下兩個邊框。

      代碼

       

       

      ReadBitmap

         這個方法是用來加載要使用皮膚的各個背景圖片的,大家看代碼就明白了,沒什么好講的。

      代碼

       

      DrawBackground

        前面所有的東西都準備好了,現在就可以畫背景了。在哪里調用?當然在OnPaint里面。每一次窗體變化都會調用這個函數。(不知道這種方式和直接拉個picturebox然后設置背景哪個好?這種直接畫的方式會不會因為onpaint的頻繁調用而受到影響?)

         因為原來左上方的圖標被背景圖片遮住了,所以在這個方法中也就順便將圖標和標題畫上去了。

      代碼

       

       

       

      說完了主要方法,下面看看提供的幾個屬性:

      7

      這里想提的就是skinfolder這個屬性。按照理想的樣子這里選擇的時候應該直接彈出已有皮膚的選項直接選擇。但是問題是我沒有找到在設計模式下讀取程序所在目錄的方法(設計模式下Application.StartupPath讀取到的是vs的目錄),所以只好采取這種方法讓設計者選擇皮膚目錄。在設計的時候程序到這個目錄下讀取配置信息,實際運行的時候程序自動截取skinfolder這個屬性中的皮膚名字,再通過application.startuppath讀取皮膚。

      一些細節

            1.該窗體默認已經嵌入了一套皮膚(春色),所以即使您沒有皮膚文件夾也能照樣顯示,只不過就一套皮膚罷了。

            2.使用方法:項目中引用QLFUI.DLL,然后在要使用的類中將繼承類由Form類改為QLFUI.Mainfrm即可。

            3.因為前面的系列已經有了窗體詳細的實現,所以換膚這里我只主要講了下換膚的部分。窗體制作的細節就不再贅述了。

            4.如果您有好的見解或者疑問歡迎和我探討,郵箱qianlf2008@163.com

      源碼下載

       下載

      posted @ 2010-10-16 15:45  qianlifeng  閱讀(23068)  評論(26)    收藏  舉報
      主站蜘蛛池模板: 亚洲午夜伦费影视在线观看| 国产成人精品电影在线观看| 国产超高清麻豆精品传媒麻豆精品| 国产午夜福利视频一区二区| 国产桃色在线成免费视频| 久章草在线毛片视频播放 | 一区二区三区四区在线不卡高清| 国产一区在线播放av| 国产精品久久久久影院亚瑟| 亚洲精品一区二区美女| 丰满多毛的大隂户视频| 精品一区二区三区不卡| 依依成人精品视频在线观看| 欧美最猛性xxxxx大叫| 国产成人精品1024免费下载| 中文人妻AV大区中文不卡| 中文字幕国产精品资源| 久久亚洲综合精品成人网| 高级会所人妻互换94部分| 精品久久久无码中文字幕| 双乳奶水饱满少妇呻吟免费看| 自拍亚洲综合在线精品| 免费A级毛片樱桃视频| 农村欧美丰满熟妇xxxx| 亚洲av日韩av中文高清性色| 99re在线视频观看| 99国产精品白浆在线观看免费| 骚虎三级在线免费播放| 济阳县| 国产精品综合一区二区三区 | 中文字幕亚洲国产精品| 亚洲欧洲一区二区福利片| 国产精品免费视频网站| 女人香蕉久久毛毛片精品| 起碰免费公开97在线视频| www国产精品内射熟女| 少妇和邻居做不戴套视频| 国产欧美日韩免费看AⅤ视频| 成年女人免费碰碰视频| 亚洲欧洲日韩精品在线| 欧美白妞大战非洲大炮|