Bilgisayar-Bilişim Teknolojileri
Ana Sayfa
Bilişim Teknolojileri Forumu Son Konuları
24 Saat
Bilişim Teknolojileri - Formatör - Bilgisayar Öğretmeni Kayıt
Kayıt Olun
iletişim
iletişim
Detaylı Arama
Arama

VB Forma İstenilen Şeklin Verilmesi!

Konu, 'Windows İşletim Sistemleri, Sorunlar ve Çözümler' kısmında gökalp tarafından paylaşıldı.


Sayfayı Paylaş /bbnetsosyal

  1. gökalp

    gökalp Seçkin Üye Seçkin Üye

    Kayıt:
    8 Eylül 2007
    Mesajlar:
    506
    Beğeni:
    0
    Forma İstenilen Şeklin Verilmesi!
    --------------------------------------------------------------------------------
    Formu Şekillendirin...
    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.
     
  2. skipper_forum

    skipper_forum Süper Üye Süper Üye

    Kayıt:
    24 Şubat 2007
    Mesajlar:
    1.064
    Beğeni:
    0
    Üstat uğraşmışsın ve paylaşmışsın teşekkürler
     
Yüklüyor...

Sayfayı Paylaş /bbnetsosyal