Cyber_Army
Would you like to react to this message? Create an account in a few clicks or log in to continue.

Visual Basic te Forma Şekil Verin

Aşağa gitmek

Visual Basic te Forma Şekil Verin Empty Visual Basic te Forma Şekil Verin

Mesaj tarafından ravmon C.tesi Ekim 25, 2008 4:56 pm

Forma istenilen şeklin verilmesi


Programımızı windowsun klasik form şeklinden kurtarmak, daha profesyonel bir görünüm sağlamak veya görüntü değişimi (skin) eklemek için kullanabileceğimiz bir kaç api fonksiyonu var.

Bu fonksiyonlar;

CreateEllipticRgn
CreatePolygonRgn

şeklindedir. Birinci fonksiyon Form'a dairesel şekiller vermek için kullanılır. İkincisi ise istenilen koordinatlarda formu şekillendirir. Bu nedenle daha kullanışlı olan ikinci fonksiyonu değerlendirmeye alacağız. "CreatePolygonRgn" fonksiyonu üç adet parametre alır.

Bunlardan birincisi Form'un çizileceği koordinatları belirler. İkinci parametre kaç adet koordinat belirlendiğini, üçüncü parametre ise çizim modunu belirler. Çizim modu genelde "1" değerini alır. Form'un koordinatları ise saat yönünde yatay ve dikey konumlar verilerek saptanır.

Formun şekillenmesi için "CreatePolygonRgn" fonksiyonu Form'un "resize" olayına yazılmalıdır.
Bir örnek verelim;
1) Yeni bir proje başlatın,
2) Form'un resize olayına aşağıdaki kodu yazın,

Private Sub Form_Resize()
If WindowState vbMinimized Then
Sekille Me
End If
End Sub

3) Projeye bir modül ekleyin,
4) Bu modüle aşağıdaki kodu yazın,
Option Explicit
Type Yerler
X As Long
Y As Long
End Type
Declare Function SetWindowRgn Lib "user32" _
(ByVal hwnd As Long, _
ByVal hRgn As Long, _
ByVal bRedraw As Long) As Long
Declare Function CreatePolygonRgn Lib "gdi32" _
(lpPoint As Yerler, _
ByVal nCount As Long, _
ByVal nPolyFillMode As Long) As Long
Dim Adet&
Dim Konum() As Yerler

Function Renk&(Nesne As Object, Kalinlik)
Dim AnaRenk&, R&, G&, B&, Oran
Oran = Kalinlik / 9
AnaRenk = RGB(140, 140, 140)
B = AnaRenk 65536: AnaRenk = AnaRenk - B * 65536
G = AnaRenk 256: AnaRenk = AnaRenk - G * 256
R = AnaRenk
R = R * Oran
G = G * Oran
B = B * Oran
Renk = R + G * 256 + B * 65536
End Function

Sub KenariBoya(Nesne As Object)
Dim I%, Y%, DişRenk&, Kalinlik%
Nesne.ScaleMode = 3
For Y = 18 To 1 Step -1
Kalinlik = Y
Nesne.DrawWidth = Kalinlik
Nesne.CurrentX = Konum(1).X
Nesne.CurrentY = Konum(1).Y
DişRenk = Renk(Nesne, Kalinlik)
For I = 2 To Adet
Nesne.Line -(Konum(I).X, Konum(I).Y), DişRenk
Next
Nesne.Line -(Konum(1).X, Konum(1).Y), DişRenk
Next
End Sub

Sub Sekille(Nesne As Object)
Adet = 20
Dim Görünüm&
ReDim Konum(Adet) As Yerler
Dim En%, Boy%, Ara%, Nokta%

En = Nesne.ScaleX(Nesne.Width, vbTwips, vbPixels)
Boy = Nesne.ScaleY(Nesne.Height, vbTwips, vbPixels)
Ara = 10

'saat yönünde
Nokta = Nokta + 1
Konum(Nokta).X = 0
Konum(Nokta).Y = Ara * 3

Nokta = Nokta + 1
Konum(Nokta).X = Ara
Konum(Nokta).Y = Ara * 2

Nokta = Nokta + 1
Konum(Nokta).X = Ara
Konum(Nokta).Y = Ara

Nokta = Nokta + 1
Konum(Nokta).X = Ara * 2
Konum(Nokta).Y = Ara

Nokta = Nokta + 1
Konum(Nokta).X = Ara * 3
Konum(Nokta).Y = 0

Nokta = Nokta + 1
Konum(Nokta).X = En - Ara * 3
Konum(Nokta).Y = 0

Nokta = Nokta + 1
Konum(Nokta).X = En - Ara * 2
Konum(Nokta).Y = Ara

Nokta = Nokta + 1
Konum(Nokta).X = En - Ara
Konum(Nokta).Y = Ara

Nokta = Nokta + 1
Konum(Nokta).X = En - Ara
Konum(Nokta).Y = Ara * 2

Nokta = Nokta + 1
Konum(Nokta).X = En
Konum(Nokta).Y = Ara * 3

Nokta = Nokta + 1
Konum(Nokta).X = En
Konum(Nokta).Y = Boy - Ara * 3

Nokta = Nokta + 1
Konum(Nokta).X = En - Ara
Konum(Nokta).Y = Boy - Ara * 2

Nokta = Nokta + 1
Konum(Nokta).X = En - Ara
Konum(Nokta).Y = Boy - Ara

Nokta = Nokta + 1
Konum(Nokta).X = En - Ara * 2
Konum(Nokta).Y = Boy - Ara

Nokta = Nokta + 1
Konum(Nokta).X = En - Ara * 3
Konum(Nokta).Y = Boy

Nokta = Nokta + 1
Konum(Nokta).X = Ara * 3
Konum(Nokta).Y = Boy

Nokta = Nokta + 1
Konum(Nokta).X = Ara * 2
Konum(Nokta).Y = Boy - Ara

Nokta = Nokta + 1
Konum(Nokta).X = Ara
Konum(Nokta).Y = Boy - Ara

Nokta = Nokta + 1
Konum(Nokta).X = Ara
Konum(Nokta).Y = Boy - Ara * 2

Nokta = Nokta + 1
Konum(Nokta).X = 0
Konum(Nokta).Y = Boy - Ara * 3

Görünüm = CreatePolygonRgn(Konum(1), Adet, 1)
SetWindowRgn Nesne.hwnd, Görünüm, True

KenariBoya Nesne
End Sub

5) Projeyi çalıştrın.

ravmon
Binbaşı
Binbaşı

Erkek Mesaj Sayısı : 11
Yaş : 44
İş/Hobiler : Sen Ne yapcan benim Mesleğimi :D
Metin Alanı : <center><font color="white"><marquee direction="left" style="background:red">Vatanını Seven Görevini En İyi Yapandı®️.</marquee></font></center>
Madalyalar : Visual Basic te Forma Şekil Verin 9443d972252eb1a7b6ab80133ceddf87
Kayıt tarihi : 25/10/08

Tecrübe
İtibar:
Visual Basic te Forma Şekil Verin Left_bar_bleue10/100Visual Basic te Forma Şekil Verin Empty_bar_bleue  (10/100)

Sayfa başına dön Aşağa gitmek

Sayfa başına dön

- Similar topics

 
Bu forumun müsaadesi var:
Bu forumdaki mesajlara cevap veremezsiniz