Dim XTan, YTan As Long
Dim YariCap, nCentreLeft, nCentreUp, GcGn, YrCpDis, YrCpKdrn, YrCpic As Single
Dim BtnX, BtnY As Single
Const Pi = 3.142857
değişkenlere değer atamak için form yükle me olayına eklenen kodlarPrivate Sub Form_Load()
nCentreUp = (Me.Resim0.Height / 2) 'resim merkezinin konumu
nCentreLeft = (Me.Resim0.Width / 2)
BtnX = Me.Resim0.Top - Me.BtnKnm.Height / 2
BtnY = Me.Resim0.Left - Me.BtnKnm.Height / 2
YariCap = Me.Resim0.Height / 2 'yariçap
' aşağıdaki 3 oran resmin özellikleriyle ilgili _
mevcut resimdeki kadranın içindeki ve dışındaki rakamların resme göre orantısal konumu _
-en/boy=1 olmak kaydıyla- resmi büyütüp küçültebilirsiniz _
ama bu resim yerine başka resim kullanmak isterseniz _
bu oranları tekrar hesaplamanız gerekir
YrCpDis = 0.929 '13 / 14
YrCpKdrn = 0.857 '6 / 7
YrCpic = 0.67 '67 / 100
GcGn = YariCap * (YrCpKdrn) 'gecegündüz hesabı
End Sub
saati ve botonun konumunu hesaplayan fonksiyonFunction SaatBul() As String
Dim SonDgr, Teta As Single
Dim Aci As Integer
SaatBul = ""
If YTan = 0 Then Exit Function
SonDgr = Atn(XTan / YTan) * 180 / 3.142857 'radyan olan açıyı dereceye çevirmek için
If YTan < 0 Then Aci = 180 'çeyrekliklerin durumuna göre açı düzeltme
If XTan < 0 And YTan > 0 Then Aci = 360
SonDgr = 2 * (Aci + SonDgr)
UznTwips = Sqr((XTan) ^ 2 + (YTan) ^ 2) 'fare imlecinin resmin merkezine uzaklığı
SaatTxt = Format(SonDgr \ 60, "00") 'dereceden saat ve dakikaya dönüştürme
DkTxt = Format(SonDgr Mod 60, "00")
Carpan = YrCpDis 'kırmızı dairenin, çemberin dışında olmasını sağlar
If UznTwips < GcGn Then
SaatTxt = SaatTxt + 12
Carpan = YrCpic 'kırmızı dairenin, çemberin içinde olmasını sağlar
End If
Teta = (Atn(XTan / YTan) + Aci * Pi / 180) '
Me.BtnKnm.Top = IIf(BtnX + YariCap * (1 - (Carpan) * Cos(Teta)) < 1, 1, BtnX + YariCap * (1 - (Carpan) * Cos(Teta)))
Me.BtnKnm.Left = IIf(BtnY + YariCap * (1 + (Carpan) * Sin(Teta)) < 1, 1, BtnY + YariCap * (1 + (Carpan) * Sin(Teta)))
SaatBul = SaatTxt & ":" & DkTxt
DoEvents
End Function
resme tkladığımızda saat alma kodu ve fare konumunun koduPrivate Sub Resim0_Click()
Me.Metin10 = SaatBul
End Sub
Private Sub Resim0_MouseMove(Button As Integer, Shift As Integer, x As Single, Y As Single)
XTan = x - nCentreLeft
YTan = nCentreUp - Y
Me.LblSaat.Caption = SaatBul
End Sub
kırmızı çerçeve yerine yuvarlak buton kullandımdilerim işinize yarar
titremeyi engelleyemedim