|Refleks|-Oyun,Tasarım,Film,Program,Tek link,İndir
Would you like to react to this message? Create an account in a few clicks or log in to continue.

|Refleks|-Oyun,Tasarım,Film,Program,Tek link,İndir


 
AnasayfaLatest imagesAramaKayıt OlGiriş yap

 

 Visual Basic PictureBox: Resmi Yeniden Boyutlandırmak

Aşağa gitmek 
YazarMesaj
serezo
Yönetici
Yönetici
serezo


Ruh Hali : Visual Basic PictureBox: Resmi Yeniden Boyutlandırmak Defaul10
Mesaj Sayısı : 952
Rep Puanı : 13129
Teşekkür Aldı : 0
Kayıt tarihi : 29/10/09
Nerden Nerden : Kocaeli/Gebze
İş/Hobiler İş/Hobiler : MEsaj atmak :D
Lakap Lakap : Sezo

Visual Basic PictureBox: Resmi Yeniden Boyutlandırmak Empty
MesajKonu: Visual Basic PictureBox: Resmi Yeniden Boyutlandırmak   Visual Basic PictureBox: Resmi Yeniden Boyutlandırmak EmptyÇarş. Ara. 09, 2009 6:14 pm

PictureBox: Resmi Yeniden Boyutlandırmak.
--------------------------------------------------------------------------------
Bildiğiniz gibi Image objesinin Strecth özelliği True yapildiğinda,
obje içindeki resim, Image boyutlarina otomatik olarak genişletiliyor
veya daraltılıyor. Aynı işlemin PictureBox objesine, en temel
yöntemlerle uyarlanmis seklini merak edenler için...
Scale
--------------------------------------------------------------------------------

Scale işlemini, bir çok library veya api(gdi, gdiplus, directx vb...)
ile çok kolay ve hizli bir şekilde yapmak mümkün. Fakat bu dökümanda
scale işleminin en temel hali anlatmak amaciyla asagidaki kodlar
sunulmustur. Islem süresi tatminkar olmayabilir.

Açiklama
--------------------------------------------------------------------------------

Öncelikle, forma PictureBox objesini koyun ve içine istediginiz bir
resmi yükleyin. Asagidaki kodlari formunuza yazin ve uygulamayi
çalistirin.


Option Explicit

Private Sub Form_Load()
'formun ve resmin scale modunu pixel yap
Me.ScaleMode = vbPixels
Picture1.ScaleMode = vbPixels
Picture1.AutoRedraw = True
Picture1.Appearance = 0
Picture1.BorderStyle = 0
Call ScaleImage(Picture1.ScaleWidth, Picture1.ScaleHeight)
End Sub

Public Function CLngX(ByVal dVal As Double) As Long
'Örnek: 0.909 degerini 0 olarak döndürür
'virgülden sonraki degerler kullanilmaz
CLngX = dVal - Abs(CLng(dVal) - dVal)
End Function

Private Sub ScaleImage(ByVal newWidth As Long, ByVal newHeight As Long)
Dim hmX As Single 'HighMetric den pixel'e dönüm katsayisi (X)
Dim hmY As Single 'HighMetric den pixel'e dönüm katsayisi (Y)
Dim nImgW As Long 'Image genişligi
Dim nImgH As Long 'Image yüksekligi
Dim img1 As IPicture 'Image
Dim dScaleX As Double 'Yeni genisligin, eski genislige orani
Dim dScaleY As Double 'Yeni yüksekligin, eski yükselige orani
Dim nPixels() As Long 'Yeni resim datası
Dim nSrcX As Long 'Kaynak Image x koordinatı
Dim nSrcY As Long 'Kaynak Image y koordinatı
Dim nDstX As Long 'Hedef Image x koordinatı
Dim nDstY As Long 'Hedef Image y koordinatı

'Formdaki resim bilgisini aktar
Picture1.AutoSize = True
Set img1 = Picture1.Picture
'HighMetric den pixel'dönüşüm katsayilarini hesapla
hmX = 0.567 / Screen.TwipsPerPixelX
hmY = 0.567 / Screen.TwipsPerPixelY
'resmin boyutunu hesapla
nImgW = img1.Width * hmX
nImgH = img1.Height * hmY
'yeni resim için data alanı ayır
ReDim nPixels(newWidth - 1, newHeight - 1)

'oran degerlerini hesapla
dScaleX = nImgW / newWidth
dScaleY = nImgH / newHeight

For nDstY = 0 To newHeight - 1
nSrcY = CLngX(nDstY * dScaleY)
For nDstX = 0 To newWidth - 1
nSrcX = CLngX(nDstX * dScaleX)
nPixels(nDstX, nDstY) = Picture1.Point(nSrcX, nSrcY)
Next nDstX
Next nDstY

For nDstY = 0 To newHeight - 1
For nDstX = 0 To newWidth - 1
Picture1.PSet (nDstX, nDstY), nPixels(nDstX, nDstY)
Next nDstX
Next nDstY
Erase nPixels

Picture1.AutoSize = False
With Picture1
Call .Move(.Left, .Top, newWidth, newHeight)
End With
End Sub
Sayfa başına dön Aşağa gitmek
 
Visual Basic PictureBox: Resmi Yeniden Boyutlandırmak
Sayfa başına dön 
1 sayfadaki 1 sayfası
 Similar topics
-
» Visual Basic PictureBox: Resmi Yeniden Boyutlandırmak
» Visual Basic'te Yap-Boz Oyunu Yapımı
» Visual Basic 6 Eğitim Seti
» Visual Basic'te Ok (Arrow) Çizim İşlemi
» Visual Basic 6.0 Görsel Eğitim Seti Türkçe

Bu forumun müsaadesi var:Bu forumdaki mesajlara cevap veremezsiniz
|Refleks|-Oyun,Tasarım,Film,Program,Tek link,İndir :: Bilgisayar Dersleri :: Visual Basic-
Buraya geçin: