Başlangıç > Kodlar > Visual Basic 6 ile Transparan (Şeffaf) Frame 2

Visual Basic 6 ile Transparan (Şeffaf) Frame 2


Transparan Frame için farklı bir derleme daha...

Transparan Frame 2

Gerekli Malzemeler
1- Transparan yapılmak istenen bir frame adı frame1 olsun


Option Explicit

Private Declare Function CreateRectRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
Private Declare Function CombineRgn Lib "gdi32" (ByVal hDestRgn As Long, ByVal hSrcRgn1 As Long, ByVal hSrcRgn2 As Long, ByVal nCombineMode As Long) As Long
Private Declare Function SetWindowRgn Lib "user32" (ByVal hWnd As Long, ByVal hRgn As Long, ByVal bRedraw As Long) As Long
Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
Private Const RGN_DIFF = 4
Private Const RGN_OR = 2

Public Sub MakeFrameTransparent(FrameToHide As Frame, Optional ShowBorder As Boolean)

Dim hRegionTemp As Long
Dim hRegionToShow As Long
Dim lScaleLeft As Long
Dim lScaleTop As Long
Dim lScaleRight As Long
Dim lScaleBottom As Long
Dim ctlTemp As Control
Dim lFrameTitleHeight As Long
Dim lFrameBorderWidth As Long

If ShowBorder Then lFrameBorderWidth = 30

If FrameToHide.Caption = "" Then
lFrameTitleHeight = lFrameBorderWidth
Else
lFrameTitleHeight = FrameToHide.Font.Size * Screen.TwipsPerPixelY * 2
End If

'framein dışını bul
lScaleRight = ScaleX(FrameToHide.Width, vbTwips, vbPixels)
lScaleBottom = ScaleY(FrameToHide.Height, vbTwips, vbPixels)
hRegionToShow = CreateRectRgn(0, 0, lScaleRight, lScaleBottom)

'framein içini bul
lScaleLeft = lScaleLeft + ScaleX(lFrameBorderWidth, vbTwips, vbPixels)
lScaleRight = lScaleLeft + lScaleRight - ScaleX(lFrameBorderWidth * 2, vbTwips, vbPixels)
lScaleTop = lScaleTop + ScaleY(lFrameTitleHeight, vbTwips, vbPixels)
lScaleBottom = lScaleTop + lScaleBottom - ScaleY(lFrameBorderWidth + lFrameTitleHeight, vbTwips, vbPixels)
hRegionTemp = CreateRectRgn(lScaleLeft, lScaleTop, lScaleRight, lScaleBottom)

'remove the inner region from the outer region
CombineRgn hRegionToShow, hRegionToShow, hRegionTemp, RGN_DIFF
DeleteObject hRegionTemp

'make temporary control regions
For Each ctlTemp In Controls
If ctlTemp.Container Is FrameToHide Then
lScaleLeft = ScaleX(ctlTemp.Left, Me.ScaleMode, vbPixels)
lScaleRight = ScaleX(ctlTemp.Width, Me.ScaleMode, vbPixels) + lScaleLeft
lScaleTop = ScaleY(ctlTemp.Top, Me.ScaleMode, vbPixels)
lScaleBottom = ScaleY(ctlTemp.Height, Me.ScaleMode, vbPixels) + lScaleTop
hRegionTemp = CreateRectRgn(lScaleLeft, lScaleTop, lScaleRight, lScaleBottom)
'add each control region
CombineRgn hRegionToShow, hRegionToShow, hRegionTemp, RGN_OR
DeleteObject hRegionTemp
End If
Next

'set the window region. Anything not in the region will be transparent
SetWindowRgn FrameToHide.hWnd, hRegionToShow, True
DeleteObject hRegionToShow

End Sub

Private Sub Form_Load()
Call MakeFrameTransparent(Frame1, True)
End Sub

 


TD Software


Reklamlar
  1. Henüz yorum yapılmamış.
  1. No trackbacks yet.

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Connecting to %s

%d blogcu bunu beğendi: