Gürol DEMİR
Bayrağımız
Gürol DEMİR
http://www.guroldemir.com
Nerede otorite varsa orada otoriteye direnen bir adam vardır.
Oscar Wilde
::: 6 Eylül Cumartesi ::::::29 Nisan 2005'den beri 31.754.015 ziyaretci, 1227 günde ortalama 25.879, şu an 446 kişi burada:::
Tmg Programını İndir  (64.518 adet indirildi), Tetkik, Görüntüleri, Referanslar, Yorumlar, SSS
Programlar | Depo | Hesaplamalar | Makaleler | Visual Basic | Sitene Ekle | Kaybettiklerim | Albüm | Mesaj Defterleri | Linkler
Forma istenilen şeklin verilmesi
     Gürol Demir
     Vergi Denetmeni


     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.
:: Bu sayfaya 2.903 kere bakıldı ::
  Ana Sayfa  |  Giriş Sayfası Yap  |  Favorilere Ekle  |  İletişim  |  Tavsiye Et  |  Yönetici Girişi  |  Hakkında