Gå til innhold

Hvordan endre størrelse på et bilde?


Anbefalte innlegg

Skrevet

Hei jeg holder på og lage et enkelt lite program som laster inn et bilde og legger noen streker oppå det. Dette bruker jeg til å se om bilder jeg har tatt er i det gyldne snitt.

Dette fungerer veldig bra ved små bilder.

 

Men jeg har støtt på et lite problem.. dersom bildene er for store for skjermen går alt helt over styr. Derfor lurer jeg på om noen har en kode for å forminske bilder som er i pictureboxer

(UTEN at bildene mister ratioen sin altså at de ikke blir strukket og forvrengt i lengre og bredde, da mister hele programmet meningen.)

Videoannonse
Annonse
Skrevet

Se på denne koden:

Option Explicit

Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
Private Declare Function SetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal crColor As Long) As Long

Private Sub Command1_Click()

Dim x, y, color, forskjell

Picture1.Cls

forskjell = VScroll1.Value / 10

For x = 0 To (Source.ScaleWidth * forskjell) - 1

   For y = 0 To (Source.ScaleHeight * forskjell) - 1
   
       color = GetPixel(Source.hdc, Val(x / forskjell), Val(y / forskjell))
       
       SetPixel Picture1.hdc, x, y, color
   
   Next y
   
Next x

End Sub

Private Sub Form_Load()
VScroll1.Min = 1
VScroll1.Max = 10
VScroll1.Value = 5
End Sub

Hvis den ikke gjør noe særlig mening kan jeg laste opp prosjektet ;)

Skrevet

Det er mye bedre å bruke API-kallet CopyImage til dette formålet. På den måten får man mye bedre kvalitet ved omgjørelsen, samt høyere ytelse. Jeg har vedlagt et eksempel på dette.

 

Men som 86Fredrik nevner er det også mulig å bruke Image-kontrollen, dog med dårligere kvalitet.

Change_Size.zip

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...