欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
VB.Net:如何實(shí)現Aero玻璃界面? - gqyz01sw的日志 - 網(wǎng)易博客

VB.Net:如何實(shí)現Aero玻璃界面?

計算機技術(shù) 2010-02-26 10:51:39 閱讀732 評論4   字號: 訂閱

Vista與Windows 7中的Aero界面是它們最吸引人的新功能之一,它可以實(shí)現大面積的透明界面。但是我們在編程中卻不能完全利用這個(gè)功能。雖然VB.Net 2005以后的控件已經(jīng)開(kāi)始支持XP和Vista的風(fēng)格了,但是窗體的界面卻無(wú)法完全實(shí)現Aero的毛玻璃效果,只有最外面的一層窗口標題欄是透明的。網(wǎng)上確實(shí)有關(guān)于如何用.Net語(yǔ)言來(lái)實(shí)現這一效果的,但那是C#,而不是VB.Net。要VB.Net語(yǔ)言來(lái)實(shí)現?在網(wǎng)上找不到。難道為了這個(gè)功能非得去學(xué)C#才行嗎?雖然網(wǎng)上有將C#代碼轉換為VB.Net代碼,但它要求完整的代碼結構,而網(wǎng)上提供的往往只是一段代碼,并不是完整的一個(gè)Class,所以也難實(shí)現。本文將講述如何用vb.net做這個(gè)界面。

Aero毛玻璃界面之所以無(wú)法在vb.net的IDE中直接使用,是因為它是Vista和Win7專(zhuān)有的功能,XP是不可能實(shí)現的。這個(gè)功能被放在了Vista和Win7的系統目錄中的一個(gè)API庫中,它就是DWMAPI.DLL.所以如果我們要做這種窗口,首先要調用這個(gè)API。

 '在程序開(kāi)頭導入這個(gè),否則會(huì )出錯
Imports System.Runtime.InteropServices

 '聲明函數和必要的類(lèi)型,在Class <類(lèi)名稱(chēng)> 后面輸入
    <StructLayout(LayoutKind.Sequential)> _
    Public Structure MARGINS
        Public cxLeftWidth As Integer
        Public cxRightWidth As Integer
        Public cyTopHeight As Integer
        Public cyButtomheight As Integer
    End Structure

    <DllImport("dwmapi.dll")> _
    Public Shared Function DwmExtendFrameIntoClientArea(ByVal hWnd As IntPtr, ByRef pMarinset As MARGINS) As Integer
    End Function

調用完了以后我們就可以在窗體加載的時(shí)候使用了。在Form_Load過(guò)程中輸入這些:

        On Error Resume Next
        Dim margins As MARGINS = New MARGINS
        margins.cxLeftWidth = -1
        margins.cxRightWidth = -1
        margins.cyTopHeight = -1
        margins.cyButtomheight = -1
        '這四個(gè)值分別是透明區域的左、右、上、下的高度,如果設置為-1則說(shuō)明全透明。
        '如果設置指定區域則輸入0以上的數字

        Dim hwnd As IntPtr = Me.Handle
        Dim result As Integer = DwmExtendFrameIntoClientArea(hwnd, margins)

好了,我們現在運行這個(gè)程序,看看是什么效果

??這是怎么回事?為什么沒(méi)有出現透明效果呢?難道這個(gè)函數是假的?
實(shí)際上,Aero的透明技術(shù)是將一種顏色映射為Alpha顏色,而這個(gè)顏色就是黑色。也就是說(shuō),我們必須把窗口的背景設置為黑色才能實(shí)現透明效果。但是如果直接把屬性中的背景設置為黑色會(huì )影響界面設計,所以我們在FormLoad中再加一句:

Me.BackColor = Color.Black

這樣在設計界面時(shí)窗體不是黑的,但運行時(shí)窗體顏色會(huì )自動(dòng)設置為黑色,這樣就可以實(shí)現透明界面了。好了,我們啟動(dòng)程序,看看效果:

很好,這次的窗體就是全透明的了。但是我們設計程序不可能只有一個(gè)窗體,上面還得加一些Label等很多控件。好,我們在上面添加一個(gè)Label控件,文字內容為“Hello Aero”,字體設置為Segoe UI。

然后我們再運行程序,你會(huì )發(fā)現,為什么沒(méi)有字呢?原因很簡(jiǎn)單,字是黑色的,也被當成透明顏色渲染了。實(shí)際上要想在這上面寫(xiě)黑色的字體還不容易,必須用graphics ”繪制”一段文本。

好,我們回到剛才的工程中,把Controlbox屬性設為False,并把窗體的Text全去掉——自然,窗體就沒(méi)有標題欄了,這時(shí)候窗體大小應該是300,300(vs窗體默認大?。?,如果不是請改成這個(gè)大小。

然后畫(huà)一個(gè)300,200的Picturebox控件,backcolor設置為灰色(再設置一次,否則這個(gè)控件起不到作用)并對齊到窗體底部,然后把Locked屬性設為T(mén)RUE,鎖定這個(gè)控件。做這個(gè)控件的目的是蓋住窗體中非透明的黑色區域,否則窗體會(huì )很難看。

在picturebox上畫(huà)一個(gè)Button按鈕,隨便設置一些文字。

然后回到代碼界面,在Form_load中要修改一些代碼:

         margins.cxLeftWidth = 0
        margins.cxRightWidth = 0
        margins.cyTopHeight = 70
        margins.cyButtomheight = 0

這樣透明的區域被限定為頂部70像素,出來(lái)的界面就很像Vista里面的各種向導的窗口了。

然后雙擊Button1,進(jìn)入代碼界面,在Button1_Click事件中輸入這些代碼:

         Dim g As Graphics
        g = CreateGraphics()
        Dim blackfont As New System.Drawing.Drawing2D.GraphicsPath
        Dim brsh As SolidBrush
        brsh = New SolidBrush(Color.Black)
        blackfont.AddString("Hello Aero!", New FontFamily("Tahoma"), FontStyle.Regular, 26, New Point(0, 0), StringFormat.GenericDefault)
        g.SmoothingMode = Drawing2D.SmoothingMode.HighQuality
        g.FillPath(brsh, blackfont)

好了,我們現在運行這個(gè)程序,然后單擊窗體里面的按鈕,看看:

看,黑色的字體可以用graphics來(lái)繪制出來(lái)。如果你要在picturebox上寫(xiě)字用Label控件也是可以的。

到現在我們的Aero玻璃界面就算完成了?,F在你就可以用這個(gè)功能來(lái)做一個(gè)Aero透明界面的程序了。不過(guò)你最好在窗口啟動(dòng)的時(shí)候檢測一下系統版本是不是Vista以上的,因為XP是不能實(shí)現的。

至于那些堅守在VB6上的人來(lái)說(shuō),要實(shí)現這個(gè)界面是不可能的,就算你調用一大堆API來(lái)實(shí)現了Aero毛玻璃效果,其他控件的98風(fēng)格會(huì )顯得很雷人(雖然vb6有辦法實(shí)現xp或Vista的界面,但是僅限于一些控件,連進(jìn)度條都不好使),所以根據時(shí)代的變化,還是換到VB.Net平臺上吧,其實(shí)如果會(huì )vb6的話(huà)轉移到vb.net是不難的,語(yǔ)法跟vb6差不多,有些不一樣的東西動(dòng)用一下搜索引擎就可以了,它的IDE比vb6實(shí)在是好用多了。別忘了,現在是2010年,vb6是Windows 98的產(chǎn)物啊……Windows 7開(kāi)始,Microsoft已經(jīng)縮減對vb6程序的支持了,Common Dialog控件已經(jīng)不好使了。據說(shuō)Windows 8的時(shí)候會(huì )完全取消對VB6的支持。

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Visual Basic是什么
這6道VB編程基礎知識題,讓你收獲滿(mǎn)滿(mǎn)
vb.net使用TreeView 控件顯示文件夾列表
全國計算機二級VB復習要點(diǎn)
怎樣用熱敏打印機把vb.net窗體內文本框內容打印出來(lái)
VB愛(ài)好者樂(lè )園(VBGood) - 經(jīng)驗之談 - VB編程的必備技巧
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久