Gürol DEMİR
Bayrağımız
Gürol DEMİR
http://www.guroldemir.com
Tok olan cihanı tok sanır, aç olan dünyada ekmek yok sanır.
Sabayi
::: 8 Eylül Çarşamba ::::::29 Nisan 2005'den beri 65.992.491 ziyaretci, 1959 günde ortalama 33.686, şu an 257 kişi:::
Programlar | Hesaplamalar | Makaleler | Visual Basic | Sitene Ekle | Kaybettiklerim | Albüm | Mesaj Defterleri | Linkler
  Gelir Vergisi  |  Kurumlar Vergisi  |  Motorlu Taşıtlar Vergisi  |  Gecikme Zammı / Faizi  |  Vergi Ziyaı Cezası  |  Tümü  
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 3.948 kere bakıldı ::
  Ana Sayfa  |  Giriş Sayfası Yap  |  Favorilere Ekle  |  İletişim  |  Tavsiye Et  |  Yönetici Girişi  |  Hakkında