1/5/2011, 19:42
Cái này sưu tầm được thấy rất hay nên share cho mọi người
Đầu
tiên là tạo 1 form, FormBorderStyle = none, BackgroundImage là một cái
ảnh png bất kỳ, có thể trong suốt, đổ bóng tùy thích
Mở phần Code ra, dòng đầu tiên import cái này:
Trong Class của Form chèn đoạn code này:
Event Form_Load thêm dòng này:
Đầu
tiên là tạo 1 form, FormBorderStyle = none, BackgroundImage là một cái
ảnh png bất kỳ, có thể trong suốt, đổ bóng tùy thích
Mở phần Code ra, dòng đầu tiên import cái này:
- Code:
[color=#0600FF]Imports[/color] System.[color=#0000FF]Runtime[/color].[color=#0000FF]InteropServices[/color]
[color=#0600FF]Imports[/color] System.[color=#0000FF]IO[/color]
Trong Class của Form chèn đoạn code này:
- Code:
#Region [color=#808080]"CUSTOM <span class="[/color]posthilit[color=#808080]">PAINT</span> METHODS ----------------------------------------------"[/color]
Protected [color=#FF8000]Overrides[/color] [color=#0600FF]ReadOnly[/color] [color=#FF8000]Property[/color] CreateParams[color=#000000]([/color][color=#000000])[/color] [color=#FF8000]As[/color] CreateParams
[color=#FF8000]Get[/color]
[color=#0600FF]Dim[/color] cp [color=#FF8000]As[/color] CreateParams [color=#008000]=[/color] [color=#FF8000]MyBase[/color].[color=#0000FF]CreateParams[/color]
cp.[color=#0000FF]ExStyle[/color] [color=#008000]=[/color] cp.[color=#0000FF]ExStyle[/color] Or [color=#008000]&[/color]H80000
[color=#008080][i]' Required: set WS_EX_LAYERED extended style[/i][/color]
[color=#FF8000]Return[/color] cp
[color=#0600FF]End[/color] [color=#FF8000]Get[/color]
[color=#0600FF]End[/color] [color=#FF8000]Property[/color]
[color=#008080][i]'Updates the Form's display using API calls[/i][/color]
[color=#FF8000]Public[/color] [color=#0600FF]Sub[/color] UpdateFormDisplay[color=#000000]([/color][color=#FF8000]ByVal[/color] backgroundImage [color=#FF8000]As[/color] Image[color=#000000])[/color]
[color=#0600FF]Dim[/color] screenDc [color=#FF8000]As[/color] IntPtr [color=#008000]=[/color] API.[color=#0000FF]GetDC[/color][color=#000000]([/color]IntPtr.[color=#0000FF]Zero[/color][color=#000000])[/color]
[color=#0600FF]Dim[/color] memDc [color=#FF8000]As[/color] IntPtr [color=#008000]=[/color] API.[color=#0000FF]CreateCompatibleDC[/color][color=#000000]([/color]screenDc[color=#000000])[/color]
[color=#0600FF]Dim[/color] hBitmap [color=#FF8000]As[/color] IntPtr [color=#008000]=[/color] IntPtr.[color=#0000FF]Zero[/color]
[color=#0600FF]Dim[/color] oldBitmap [color=#FF8000]As[/color] IntPtr [color=#008000]=[/color] IntPtr.[color=#0000FF]Zero[/color]
[color=#0600FF]Try[/color]
[color=#008080][i]'Display-image[/i][/color]
[color=#0600FF]Dim[/color] bmp [color=#FF8000]As[/color] [color=#FF8000]New[/color] Bitmap[color=#000000]([/color]backgroundImage[color=#000000])[/color]
hBitmap [color=#008000]=[/color] bmp.[color=#0000FF]GetHbitmap[/color][color=#000000]([/color]Color.[color=#0000FF]FromArgb[/color][color=#000000]([/color][color=#FF0000]0[/color][color=#000000])[/color][color=#000000])[/color]
[color=#008080][i]'Set the fact that background is transparent[/i][/color]
oldBitmap [color=#008000]=[/color] API.[color=#0000FF]SelectObject[/color][color=#000000]([/color]memDc, hBitmap[color=#000000])[/color]
[color=#008080][i]'Display-rectangle[/i][/color]
[color=#0600FF]Dim[/color] size [color=#FF8000]As[/color] Size [color=#008000]=[/color] bmp.[color=#0000FF]Size[/color]
[color=#0600FF]Dim[/color] pointSource [color=#FF8000]As[/color] [color=#FF8000]New[/color] Point[color=#000000]([/color]0, 0[color=#000000])[/color]
[color=#0600FF]Dim[/color] topPos [color=#FF8000]As[/color] [color=#FF8000]New[/color] Point[color=#000000]([/color][color=#FF8000]Me[/color].[color=#0600FF]Left[/color], [color=#FF8000]Me[/color].[color=#0000FF]Top[/color][color=#000000])[/color]
[color=#008080][i]'Set up blending options[/i][/color]
[color=#0600FF]Dim[/color] blend [color=#FF8000]As[/color] [color=#FF8000]New[/color] API.[color=#0000FF]BLENDFUNCTION[/color][color=#000000]([/color][color=#000000])[/color]
blend.[color=#0000FF]BlendOp[/color] [color=#008000]=[/color] API.[color=#0000FF]AC_SRC_OVER[/color]
blend.[color=#0000FF]BlendFlags[/color] [color=#008000]=[/color] 0
blend.[color=#0000FF]SourceConstantAlpha[/color] [color=#008000]=[/color] 255
blend.[color=#0000FF]AlphaFormat[/color] [color=#008000]=[/color] API.[color=#0000FF]AC_SRC_ALPHA[/color]
API.[color=#0000FF]UpdateLayeredWindow[/color][color=#000000]([/color][color=#FF8000]Me[/color].[color=#0000FF]Handle[/color], screenDc, topPos, size, memDc, pointSource, _
[color=#FF0000]0[/color], blend, API.[color=#0000FF]ULW_ALPHA[/color][color=#000000])[/color]
[color=#008080][i]'Clean-up[/i][/color]
bmp.[color=#0000FF]Dispose[/color][color=#000000]([/color][color=#000000])[/color]
API.[color=#0000FF]ReleaseDC[/color][color=#000000]([/color]IntPtr.[color=#0000FF]Zero[/color], screenDc[color=#000000])[/color]
[color=#0600FF]If[/color] hBitmap <> IntPtr.[color=#0000FF]Zero[/color] [color=#FF8000]Then[/color]
API.[color=#0000FF]SelectObject[/color][color=#000000]([/color]memDc, oldBitmap[color=#000000])[/color]
API.[color=#0000FF]DeleteObject[/color][color=#000000]([/color]hBitmap[color=#000000])[/color]
[color=#0600FF]End[/color] [color=#0600FF]If[/color]
API.[color=#0000FF]DeleteDC[/color][color=#000000]([/color]memDc[color=#000000])[/color]
[color=#0600FF]Catch[/color] generatedExceptionName [color=#FF8000]As[/color] Exception
[color=#0600FF]End[/color] [color=#0600FF]Try[/color]
[color=#0600FF]End[/color] [color=#0600FF]Sub[/color]
#End Region
Protected [color=#FF8000]Overrides[/color] [color=#0600FF]Sub[/color] OnPaint[color=#000000]([/color][color=#FF8000]ByVal[/color] e [color=#FF8000]As[/color] PaintEventArgs[color=#000000])[/color]
UpdateFormDisplay[color=#000000]([/color][color=#FF8000]Me[/color].[color=#0000FF]BackgroundImage[/color][color=#000000])[/color]
[color=#0600FF]End[/color] [color=#0600FF]Sub[/color]
Event Form_Load thêm dòng này:
- Code:
UpdateFormDisplay[color=#000000]([/color][color=#FF8000]Me[/color].[color=#0000FF]BackgroundImage[/color][color=#000000])[/color]
- Code:
[color=#FF8000]Friend[/color] [color=#0600FF]Class[/color] API
[color=#FF8000]Public[/color] [color=#0600FF]Const[/color] AC_SRC_OVER [color=#FF8000]As[/color] [color=#FF0000]Byte[/color] [color=#008000]=[/color] [color=#008000]&[/color]H0
[color=#FF8000]Public[/color] [color=#0600FF]Const[/color] AC_SRC_ALPHA [color=#FF8000]As[/color] [color=#FF0000]Byte[/color] [color=#008000]=[/color] [color=#008000]&[/color]H1
[color=#FF8000]Public[/color] [color=#0600FF]Const[/color] ULW_ALPHA [color=#FF8000]As[/color] Int32 [color=#008000]=[/color] [color=#008000]&[/color]H2
<StructLayout[color=#000000]([/color]LayoutKind.[color=#0000FF]Sequential[/color], Pack:[color=#008000]=[/color]1[color=#000000])[/color]> _
[color=#FF8000]Public[/color] [color=#0600FF]Structure[/color] BLENDFUNCTION
[color=#FF8000]Public[/color] BlendOp [color=#FF8000]As[/color] [color=#FF0000]Byte[/color]
[color=#FF8000]Public[/color] BlendFlags [color=#FF8000]As[/color] [color=#FF0000]Byte[/color]
[color=#FF8000]Public[/color] SourceConstantAlpha [color=#FF8000]As[/color] [color=#FF0000]Byte[/color]
[color=#FF8000]Public[/color] AlphaFormat [color=#FF8000]As[/color] [color=#FF0000]Byte[/color]
[color=#0600FF]End[/color] [color=#0600FF]Structure[/color]
[color=#FF8000]Public[/color] [color=#0600FF]Declare[/color] [color=#FF8000]Auto[/color] [color=#0600FF]Function[/color] UpdateLayeredWindow Lib [color=#808080]"user32.dll"[/color] [color=#000000]([/color][color=#FF8000]ByVal[/color] hwnd [color=#FF8000]As[/color] IntPtr, [color=#FF8000]ByVal[/color] hdcDst [color=#FF8000]As[/color] IntPtr, [color=#FF8000]ByRef[/color] pptDst [color=#FF8000]As[/color] Point, [color=#FF8000]ByRef[/color] psize [color=#FF8000]As[/color] Size, [color=#FF8000]ByVal[/color] hdcSrc [color=#FF8000]As[/color] IntPtr, [color=#FF8000]ByRef[/color] pprSrc [color=#FF8000]As[/color] Point, _
[color=#FF8000]ByVal[/color] crKey [color=#FF8000]As[/color] Int32, [color=#FF8000]ByRef[/color] pblend [color=#FF8000]As[/color] BLENDFUNCTION, [color=#FF8000]ByVal[/color] dwFlags [color=#FF8000]As[/color] Int32[color=#000000])[/color] [color=#FF8000]As[/color] [color=#FF0000]Boolean[/color]
[color=#FF8000]Public[/color] [color=#0600FF]Declare[/color] [color=#FF8000]Auto[/color] [color=#0600FF]Function[/color] GetDC Lib [color=#808080]"user32.dll"[/color] [color=#000000]([/color][color=#FF8000]ByVal[/color] hWnd [color=#FF8000]As[/color] IntPtr[color=#000000])[/color] [color=#FF8000]As[/color] IntPtr
[color=#FF8000]Public[/color] [color=#0600FF]Declare[/color] [color=#FF8000]Auto[/color] [color=#0600FF]Function[/color] CreateCompatibleDC Lib [color=#808080]"gdi32.dll"[/color] [color=#000000]([/color][color=#FF8000]ByVal[/color] hDC [color=#FF8000]As[/color] IntPtr[color=#000000])[/color] [color=#FF8000]As[/color] IntPtr
<DllImport[color=#000000]([/color][color=#808080]"user32.dll"[/color], ExactSpelling:[color=#008000]=[/color][color=#0600FF]True[/color][color=#000000])[/color]> _
[color=#FF8000]Public[/color] [color=#FF8000]Shared[/color] [color=#0600FF]Function[/color] ReleaseDC[color=#000000]([/color][color=#FF8000]ByVal[/color] hWnd [color=#FF8000]As[/color] IntPtr, [color=#FF8000]ByVal[/color] hDC [color=#FF8000]As[/color] IntPtr[color=#000000])[/color] [color=#FF8000]As[/color] [color=#FF0000]Integer[/color]
[color=#0600FF]End[/color] [color=#0600FF]Function[/color]
[color=#FF8000]Public[/color] [color=#0600FF]Declare[/color] [color=#FF8000]Auto[/color] [color=#0600FF]Function[/color] DeleteDC Lib [color=#808080]"gdi32.dll"[/color] [color=#000000]([/color][color=#FF8000]ByVal[/color] hdc [color=#FF8000]As[/color] IntPtr[color=#000000])[/color] [color=#FF8000]As[/color] [color=#FF0000]Boolean[/color]
<DllImport[color=#000000]([/color][color=#808080]"gdi32.dll"[/color], ExactSpelling:[color=#008000]=[/color][color=#0600FF]True[/color][color=#000000])[/color]> _
[color=#FF8000]Public[/color] [color=#FF8000]Shared[/color] [color=#0600FF]Function[/color] SelectObject[color=#000000]([/color][color=#FF8000]ByVal[/color] hDC [color=#FF8000]As[/color] IntPtr, [color=#FF8000]ByVal[/color] hObject [color=#FF8000]As[/color] IntPtr[color=#000000])[/color] [color=#FF8000]As[/color] IntPtr
[color=#0600FF]End[/color] [color=#0600FF]Function[/color]
[color=#FF8000]Public[/color] [color=#0600FF]Declare[/color] [color=#FF8000]Auto[/color] [color=#0600FF]Function[/color] DeleteObject Lib [color=#808080]"gdi32.dll"[/color] [color=#000000]([/color][color=#FF8000]ByVal[/color] hObject [color=#FF8000]As[/color] IntPtr[color=#000000])[/color] [color=#FF8000]As[/color] [color=#FF0000]Boolean[/color]
[color=#0600FF]End[/color] [color=#0600FF]Class[/color]
Giờ thì mọi người ấn F5 để xem kết quả