pcworld online logo

Resmi Kaydırmak

İlk program örneğimiz bir okuyucumuzun sorusu üzerine düşünüldü. Bu okuyucumuz büyük bir resmi kaydırma çubukları yardımıyla form üzerinde görmek istiyor ve bunu başaramadığından yakınıyordu. İşte sorunun çözümü:

resim Bir form yaratın ve 1. resimde olduğu gibi kontrolleri üzerine yerleştirin. Dikkat etmeniz gereken konu, içinde resim bulunan resim kutusunun arkasında bir resim kutusu daha olduğudur. Yani formun üzerine büyükçe bir resim kutusu çizdikten sonra bunun içine ikinci bir resim kutusu çizip buna sabit diskinizdeki bir resmi koymalısınız. (Resmi programın çalıştırma aşamasında da yükletebilirsiniz). İşte kodlar...

Sub Form_Load()
Const PIXEL = 3
Const NONE = 0
Form1.ScaleMode = PIXEL:  Picture1.ScaleMode = PIXEL

' İkinci resim kutusu yüklenen resmin büyüklüğünü alıyor.
   Picture2.AutoSize = True

' Çerçevelerden kurtulalım...
   Picture1.BorderStyle = NONE
   Picture2.BorderStyle = NONE

' İki resim kutusunu da resmi göstermek için hazırla
  Picture1.Move 0, 0, ScaleWidth - VScroll1.Width, ScaleHeight - HScroll1.Height
  Picture2.Move 0, 0
resim
   ' Yatay kaydırma çubuğunu ayarla
   HScroll1.Top = Picture1.Height : HScroll1.Left = 0
   HScroll1.Width = Picture1.Width

   ' Dikey kaydırma çubuğunu ayarla
   VScroll1.Top = 0 : VScroll1.Left = Picture1.Width
   VScroll1.Height = Picture1.Height

   ' Kaydırma çubuklarını resmin büyüklüğüne göre ayarla
   HScroll1.Max = Picture2.Width - Picture1.Width
   VScroll1.Max = Picture2.Height - Picture1.Height

   ' Eğer içinde resim olan kutucuk büyük kutucuğun
   ' boyunu geçmiyorsa kaydırma çubuğuna gerek yok
   VScroll1.Visible = (Picture1.Height < Picture2.Height)
   HScroll1.Visible = (Picture1.Width < Picture2.Width)
End Sub

Sub Form_Resize()
   ' Form’un büyüklüğü değiştiğinde resmin de
   ' büyüklüğünü forma göre ayarla
   Picture1.Height = Form1.Height
   Picture1.Width = Form1.Width
 
  ' Kaydırma çubuklarını ve resmi tekrar ayarla
   Picture1.Move 0, 0, ScaleWidth - VScroll1.Width, ScaleHeight - HScroll1.Height
   Picture2.Move 0, 0 : HScroll1.Top = Picture1.Height
   HScroll1.Left = 0 : HScroll1.Width = Picture1.Width
   VScroll1.Top = 0 : VScroll1.Left = Picture1.Width
   VScroll1.Height = Picture1.Height
   HScroll1.Max = Picture2.Width - Picture1.Width
   VScroll1.Max = Picture2.Height - Picture1.Height
   ' Kaydırma çubuklarına gerek var mı?
   VScroll1.Visible = (Picture1.Height < Picture2.Height)
   HScroll1.Visible = (Picture1.Width < Picture2.Width)
End Sub

Sub HScroll1_Change()
' ikinci resim eksi değer almaktadır çünkü kaydırma
' çubuğunu sağa kaydırdığınızda resim sola kaymalıdır
   Picture2.Left = -HScroll1.Value
End Sub

Sub VScroll1_Change()
  Picture2.Top = -VScroll1.Value
End Sub