Μπορεί η Vb να αλλάξει το μέγεθος μιας φωτογραφίας;

Συζητήσεις για τις γλώσσες του dot Net και για του Visual Studio της Microsoft

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
Άβαταρ μέλους
geoki
Δημοσιεύσεις: 309
Εγγραφή: 07 Ιαν 2002 01:00
Τοποθεσία: Giannitsa

Μπορεί η Vb να αλλάξει το μέγεθος μιας φωτογραφίας;

Δημοσίευση από geoki » 23 Οκτ 2002 14:44

Είμαι εντελώς αρχάριος στη VB και προσπαθώ να κάνω μια προσωπική εφαρμογή περισσότερο για να μάθω κάποια πράγματα.
Θα ήθελα να ρωτήσω αν γίνεται και πως γίνεται το παρακάτω:
Θέλω να κάνω ένα κουμπί που να ανοίγει μια εικόνα την "pic1.jpg" η οποία έχει μέγεθος 350x350 και να τη μετατρέπει σε μέγεθος 120x120 με όνομα "pic1small.jpg".

Μπορεί κάποιος να με βοηθήσει σ αυτό το πρόβλημα;

Άβαταρ μέλους
agrippas
Script Master
Δημοσιεύσεις: 494
Εγγραφή: 18 Ιούλ 2002 14:52
Τοποθεσία: Υπερπέραν
Επικοινωνία:

Μπορεί η Vb να αλλάξει το μέγεθος μιας φωτογραφίας;

Δημοσίευση από agrippas » 23 Οκτ 2002 15:37

Υπάρχουν διάφοροι τρόποι αλλά σου δίνω έναν απλό για να μη μπλέξεις με API functions...

- Βάλε δύο picturebox στη φόρμα σου

- Ονόμασε το πρώτο PictureOriginal και το δεύτερο PictureResized.

- Γύρνα στην προβολή κώδικα και ρίξε αυτό:

Κώδικας: Επιλογή όλων

Private Sub Form_Load() 
 PictureResized.AutoRedraw = True 
 PictureResized.Width = PictureOriginal.Width / 2 'ή όπως θες
 PictureResized.Height = PictureOriginal.Height / 2 'ή όπως θες
 PictureResized.PaintPicture PictureOriginal.Picture, 0, 0,  PictureResized.ScaleWidth, PictureResized.ScaleHeight 
 SavePicture PictureResized.Image, "c:\picture.jpg" 'δίνεις δικό σου path ή filename
End Sub 
Για μεγαλύτερη αμεσότητα μπορείς να χρησιμοποιήσεις και το Common Dialog για load - save των αρχείων :wink:

Άβαταρ μέλους
geoki
Δημοσιεύσεις: 309
Εγγραφή: 07 Ιαν 2002 01:00
Τοποθεσία: Giannitsa

Μπορεί η Vb να αλλάξει το μέγεθος μιας φωτογραφίας;

Δημοσίευση από geoki » 13 Νοέμ 2002 23:59

File agrippa eyxaristo poly gia thn apanthsh

Dokimasa ton kodika poy moy esteiles kai omologoymenos e;inai poli konta s' ayto poy thelo na kano.
Kati poy tha hthela na rvthso einai an mporo na oriso akribos thn analish ths smikrinshs px se 120x120 aneksartita apo to poso tha e;inai h analish thw arxikhs eikonas.

Efxaristo kai pali

edv einai o kodikas http://users.hol.gr/~ilios-gr/picsize.zip[/url]

Άβαταρ μέλους
agrippas
Script Master
Δημοσιεύσεις: 494
Εγγραφή: 18 Ιούλ 2002 14:52
Τοποθεσία: Υπερπέραν
Επικοινωνία:

Μπορεί η Vb να αλλάξει το μέγεθος μιας φωτογραφίας;

Δημοσίευση από agrippas » 14 Νοέμ 2002 01:00

Με δεδομένο ότι στη VB μετράμε συνήθως με twips και όχι με pixels, άλλαξε την 3η και 4η γραμμή του κώδικα που σου έδωσα με:

PictureResized.Width = 1860
PictureResized.Height = 1860

που σου δίνει μια picture 120 x 120 :wink:

Άβαταρ μέλους
geoki
Δημοσιεύσεις: 309
Εγγραφή: 07 Ιαν 2002 01:00
Τοποθεσία: Giannitsa

Μπορεί η Vb να αλλάξει το μέγεθος μιας φωτογραφίας;

Δημοσίευση από geoki » 14 Νοέμ 2002 19:48

thaymasia
Na rothso kai kati allo? :oops:

H origina eikona ayth th stigmh einai ensomatomenh me to PictureBox.
Ego thelo mesa ston kodika na balo ena link oste kathe fora na to diabazei apo to disko.
p.x. c:\my pictures\eikona1.jpg

eyxaristo kai pali

geoki

Άβαταρ μέλους
agrippas
Script Master
Δημοσιεύσεις: 494
Εγγραφή: 18 Ιούλ 2002 14:52
Τοποθεσία: Υπερπέραν
Επικοινωνία:

Μπορεί η Vb να αλλάξει το μέγεθος μιας φωτογραφίας;

Δημοσίευση από agrippas » 14 Νοέμ 2002 23:36

Έλα λοιπόν να το κάνουμε the right way...

- Σβήσε όλον τον κώδικα από το συμβάν form_load()

- Κράτησε τα δύο picturebox που έβαλες, όπως είναι με τα ονόματά τους (αυτά που σου έδωσα πιο πάνω)

- Πρόσθεσε δύο command buttons. Στο πρώτο δώσε name cmdload και caption "Διάβασε φωτογραφία". Στο δεύτερο δώσε name cmdsave και caption "Αποθήκευσε φωτογραφία".

- Πάτα ctrl+T και ψάξε να βρεις το Microsoft Common Dialog Control. Τσέκαρέ το και οκ. Θα σου εμφανιστεί αριστερά στο περιβάλλον εργασίας. Μετά κάνε διπλό κλικ πάνω του να το βάλεις στη φόρμα. Μην αλλάξεις τίποτα, άσε το name του να είναι commondialog1

- Κάνε διπλό κλικ στο cmdload *(πρώτο command button) και ρίξε αυτό:

Κώδικας: Επιλογή όλων

Private Sub cmdload_Click()
    PictureOriginal.AutoSize = True
    CommonDialog1.CancelError = True
    On Error GoTo cdlgerror
    CommonDialog1.ShowOpen
    PictureOriginal.Picture = LoadPicture(CommonDialog1.FileName)
cdlgerror:
    Exit Sub
End Sub
- Κάνε διπλό κλικ στο cmdsave *(δεύτερο command button) και ρίξε αυτό:

Κώδικας: Επιλογή όλων

Private Sub cmdsave_Click()
    CommonDialog1.CancelError = True
    On Error GoTo cdlgerror2
    PictureResized.AutoRedraw = True
    PictureResized.Width = 1860
    PictureResized.Height = 1860
    PictureResized.PaintPicture PictureOriginal.Picture, 0, 0, PictureResized.ScaleWidth, PictureResized.ScaleHeight
    CommonDialog1.ShowSave
    SavePicture PictureResized.Image, CommonDialog1.FileName
cdlgerror2:
    Exit Sub
End Sub
Και ιδού, έτοιμο το πρώτο σου τσίφτικο πρόγραμμα που μετατρέπει κάθε εικόνα σε 120 x 120 !!!

Στην υγεια σου :pint: :D

Άβαταρ μέλους
geoki
Δημοσιεύσεις: 309
Εγγραφή: 07 Ιαν 2002 01:00
Τοποθεσία: Giannitsa

Μπορεί η Vb να αλλάξει το μέγεθος μιας φωτογραφίας;

Δημοσίευση από geoki » 15 Νοέμ 2002 22:30

kai an kata thn apothikeysh den thelo na bgainei to Save dialog box alla na apothikeyei se ena kathorismeno meros
px na apothikeytei sto C:/ ston ypofakelo my pics me onoma arxeioy picture.jpg
C:/my pics/picture.jpg

zhtao polla?

Άβαταρ μέλους
agrippas
Script Master
Δημοσιεύσεις: 494
Εγγραφή: 18 Ιούλ 2002 14:52
Τοποθεσία: Υπερπέραν
Επικοινωνία:

Μπορεί η Vb να αλλάξει το μέγεθος μιας φωτογραφίας;

Δημοσίευση από agrippas » 16 Νοέμ 2002 00:57

Μια που μαθαίνεις καλά κάνεις και ρωτάς :lol:

Άλλαξε το δεύτερο συμβάν με

Κώδικας: Επιλογή όλων

Private Sub cmdsave_Click() 
    PictureResized.AutoRedraw = True 
    PictureResized.Width = 1860 
    PictureResized.Height = 1860 
    PictureResized.PaintPicture PictureOriginal.Picture, 0, 0, PictureResized.ScaleWidth, PictureResized.ScaleHeight 
    SavePicture PictureResized.Image, "c:\mypictures\picturesmall.jpg"
End Sub 
αλλά αν θες τη γνώμη μου, καλύτερα να κρατήσεις το common dialog στο save...

Αν πάλι διαλέξεις αυτόν τον κώδικα που σου δίνω, φρόντισε να υπάρχει ο φάκελος mypictures στο ριζικό c:\, αλλιώς θα πάρεις ένα πολύ όμορφο μήνυμα σφάλματος. :P

Απάντηση

Επιστροφή στο “dot Net και Visual Studio”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες