スポンサーサイト 

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

VB.netでAero効果 

Vistaから導入されWindows7でも有効なAero効果ですが、
VB.netから使おうとしても「どうやればいいのかわからない(泣」ってな人も多いんじゃないでしょうか?
詳しいコードとかは続きを読むから。
まず、適当なプロジェクトを作りますね。
aerotest1.png

プロジェクト名は"AeroTest"とでもしましょうか。
aerotest2.png

で、プロジェクトができたら、適当なクラスファイルを作ってください。
aerotest3.png
aerotest4.png
aerotest5.png

ファイルができたら以下のソースをコピペします。
aerotest6.png
Imports System
Imports System.Runtime.InteropServices
Imports System.Drawing
Imports System.Text

Namespace MsdnMag
    ' Desktop Windows Manager APIs
    Friend Class DwmApi
        <DllImport("dwmapi.dll", PreserveSig := False)> _
        Public Shared Sub DwmEnableBlurBehindWindow(ByVal hWnd As IntPtr, ByVal pBlurBehind As DWM_BLURBEHIND)
        End Sub
       
        <DllImport("dwmapi.dll", PreserveSig := False)> _
        Public Shared Sub DwmExtendFrameIntoClientArea(ByVal hWnd As IntPtr, ByVal pMargins As MARGINS)
        End Sub
       
        <DllImport("dwmapi.dll", PreserveSig := False)> _
        Public Shared Function DwmIsCompositionEnabled() As Boolean
        End Function
       
        <DllImport("dwmapi.dll", PreserveSig := False)> _
        Public Shared Sub DwmGetColorizationColor(ByRef pcrColorization As Integer, <MarshalAs(UnmanagedType.Bool)> ByRef pfOpaqueBlend As Boolean)
        End Sub
       
        <DllImport("dwmapi.dll", PreserveSig := False)> _
        Public Shared Sub DwmEnableComposition(ByVal bEnable As Boolean)
        End Sub
       
        <DllImport("dwmapi.dll", PreserveSig := False)> _
        Public Shared Function DwmRegisterThumbnail(ByVal dest As IntPtr, ByVal source As IntPtr) As IntPtr
        End Function
       
        <DllImport("dwmapi.dll", PreserveSig := False)> _
        Public Shared Sub DwmUnregisterThumbnail(ByVal hThumbnail As IntPtr)
        End Sub
       
        <DllImport("dwmapi.dll", PreserveSig := False)> _
        Public Shared Sub DwmUpdateThumbnailProperties(ByVal hThumbnail As IntPtr, ByVal props As DWM_THUMBNAIL_PROPERTIES)
        End Sub
       
        <DllImport("dwmapi.dll", PreserveSig := False)> _
        Public Shared Sub DwmQueryThumbnailSourceSize(ByVal hThumbnail As IntPtr, ByRef size As Size)
        End Sub
       
        <StructLayout(LayoutKind.Sequential)> _
        Public Class DWM_THUMBNAIL_PROPERTIES
            Public dwFlags As UInteger
            Public rcDestination As RECT
            Public rcSource As RECT
            Public opacity As Byte
            <MarshalAs(UnmanagedType.Bool)> _
            Public fVisible As Boolean
            <MarshalAs(UnmanagedType.Bool)> _
            Public fSourceClientAreaOnly As Boolean
           
            Public Const DWM_TNP_RECTDESTINATION As UInteger = &H1
            Public Const DWM_TNP_RECTSOURCE As UInteger = &H2
            Public Const DWM_TNP_OPACITY As UInteger = &H4
            Public Const DWM_TNP_VISIBLE As UInteger = &H8
            Public Const DWM_TNP_SOURCECLIENTAREAONLY As UInteger = &H10
        End Class
       
        <StructLayout(LayoutKind.Sequential)> _
        Public Class MARGINS
            Public cxLeftWidth As Integer, cxRightWidth As Integer, cyTopHeight As Integer, cyBottomHeight As Integer
           
            Public Sub New(ByVal left As Integer, ByVal top As Integer, ByVal right As Integer, ByVal bottom As Integer)
                cxLeftWidth = left
                cyTopHeight = top
                cxRightWidth = right
                cyBottomHeight = bottom
            End Sub
        End Class
       
        <StructLayout(LayoutKind.Sequential)> _
        Public Class DWM_BLURBEHIND
            Public dwFlags As UInteger
            <MarshalAs(UnmanagedType.Bool)> _
            Public fEnable As Boolean
            Public hRegionBlur As IntPtr
            <MarshalAs(UnmanagedType.Bool)> _
            Public fTransitionOnMaximized As Boolean
           
            Public Const DWM_BB_ENABLE As UInteger = &H1
            Public Const DWM_BB_BLURREGION As UInteger = &H2
            Public Const DWM_BB_TRANSITIONONMAXIMIZED As UInteger = &H4
        End Class
       
        <StructLayout(LayoutKind.Sequential)> _
        Public Structure RECT
            Public left As Integer, top As Integer, right As Integer, bottom As Integer
           
            Public Sub New(ByVal left As Integer, ByVal top As Integer, ByVal right As Integer, ByVal bottom As Integer)
                Me.left = left
                Me.top = top
                Me.right = right
                Me.bottom = bottom
            End Sub
        End Structure
    End Class
End Namespace


コピペできたらプロジェクトを保存しておきましょう。
aerotest7.png
aerotest8.png

保存したらデザイナを開きます。
aerotest9.png

そしてフォームをダブルクリック。
aerotest10.png

するとForm1のコードが開きます。
aerotest11.png

そこのLoadイベントに下のソースをコピペします。
aerotest12.png
        If MsdnMag.DwmApi.DwmIsCompositionEnabled() Then
MsdnMag.DwmApi.DwmExtendFrameIntoClientArea(Me.Handle, New MsdnMag.DwmApi.MARGINS(-1, 0, 0, 0))
End If


できたらまたデザイナに戻ります。
aerotest13.png

そして、Form1の背景色を"Black"にします。
aerotest14.png

これで完成です。
aerotest15.png

実行ボタンを押してみて下さい。
aerotest16.png

すると多分、VistaとかWindows7Aeroが使える環境の人は綺麗なフォームが開くはずです。
結果はやってからのお楽しみってことで画像は載せません。
では。

コメント

このコメントは管理者の承認待ちです
承認待ちコメント by  [2010/12/28]
このコメントは管理者の承認待ちです
承認待ちコメント by  [2011/01/29]

コメントを投稿















管理者にだけ表示を許可する

トラックバック

この記事のトラックバックURL
http://trainfandiary.blog14.fc2.com/tb.php/254-1eaa755f

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。