Ένα ενισχυμένο PictureBox με δυνατότητες εμφάνισης της εικόνας με fade-in. Στην έκδοση 2.0 υποστηρίζεται και δυνατότητα διαδοχής εικόνων (Animation).
Χρήστος Μουρατίδης, Φεβρουάριος 2007
Τι νέο υπάρχει στην έκδοση 2.1
Αποσυμπιέσετε με ένα πρόγραμμα συμπίεσης πχ. WinZip τα περιεχόμενα του αρχείου PictureBoxFlash.zip σε κάποιο φάκελο στο δίσκο. Θα δείτε να δημιουργείται ένας φάκελος με όνομα PictureBoxFlash Test, ο οποίος περιέχει ένα project δείγματος χρήσης του control
καθώς και το παρόν readme αρχείο. Το project παρέχει μία υποδειγματική εφαρμογή χρήσης του control.
Σκοπός του PictureBoxFlash είναι να εμπλουτίσει τις δυνατότητες του κοινού PictureBox που προσφέρει η VB.NET, παρέχοντας τη δυνατότητα εμφάνισης της εικόνας με ένα ωραίο fade-in (δηλ. η εικόνα να εμφανίζεται σιγά-σιγά). Επιπλέον, από την έκδοση 2.0, υπάρχει πολλαπλή δυνατότητα : εκτός από το να εμφανίσουμε απλά μία εικόνα με ή χωρίς fade-in, μπορούμε να ορίσουμε το control να εμφανίζει διαδοχικά εικόνες (animation - σαν slideshow) με δυνατότητα συνεχούς ή όχι επανάληψης. Στη δεύτερη περίπτωση, η πηγή των εικόνων μπορεί να είναι ένα ImageList (για εικόνες μέχρι 256x256 pixels) ή ένας φάκελος στο δίσκο που περιέχει εικόνες bitmap τύπου .bmp, .jpg, .gif, .png.. Επίσης, ορίζουμε το χρόνο μεταξύ των εικόνων (animation delay), και μεθόδους για να ξεκινήσει, να παγώσει ή να σταματήσει το animation. Φυσικά, και στο animation μπορούμε να καθορίσουμε αν εικόνες θα εμφανίζονται με fade-in ή όχι (ιδιότητα FlashIn).
· Για να εισάγετε μία εικόνα χρησιμοποιείστε την ιδιότητα Image :
PictureBoxFlash1.Image = System.Drawing.Image.FromFile(“Άνδρος.jpg”)
Μην ξεχνάτε ότι ο τύπος Image πρέπει να είναι Bitmap. Αν επιθυμείτε να διαγράψετε την εικόνα, εκχωρείστε την τιμή Nothing.
· Για να ορίσετε να κάνει fade-in και την ταχύτητά του θέστε τις ιδιότητες FlashIn και FlashValue, αντίστοιχα :
PictureBoxFlash1.FlashIn = True
PictureBoxFlash1.FlashValue = 30
Όσο μεγαλύτερη η τιμή FlashValue τόσο πιο γρήγορο το fade-in (τιμές 1-100).
·
Για να κάνει Animation, το χρόνο μεταξύ
των εικόνων και το συνεχές παίξιμο ορίστε τις ιδιότητες Animating, AnimationDelay και AnimationLoop, αντίστοιχα :
PictureBoxFlash1.Animating = True
PictureBoxFlash1.AnimationDelay = 3000 ‘σε millisecond, εδώ 3 δευτερόλεπτα
PictureBoxFlash1.AnimationLoop = True
· Στην έκδοση 2.1 μπορείτε επιπλέον να ορίσετε τον τρόπο του Animation (δηλαδή οι εικόνες να εμφανίζονται σειριακά ή random) και το πλήθος των επαναλήψεων της σειράς των εικόνων, στις ιδιότητες AnimationMode και AnimationLoopTimes :
PictureBoxFlash1.AnimationMode
= AnimationModeEnum.Random
PictureBoxFlash1.AnimationLoopTimes = 3
Αν στο AnimationLoopTimes βάλετε μία τιμή μικρότερη ή ίση με το 0 τότε θα έχετε συνεχή επανάληψη.
· Για να ορίσετε ότι οι εικόνες του Animation θα προέρχονται από ένα ImageList της φόρμας, θέστε την ιδιότητα ImagesForAnimation και ImageListAnimation ως εξής :
PictureBoxFlash1.ImagesForAnimation = ImagesForAnimationEnum.fromImageList
PictureBoxFlash1.ImageListAnimation = ImageList1
Μην ξεχνάτε ότι ένα ImageList αποθηκεύει «μικρές» εικόνες, δηλαδή μέχρι διαστάσεων 256x256 pixels. Για μεγαλύτερες εικόνες, βάλτε τις σε ένα φάκελο και κάντε το παρακάτω :
· Για να ορίσετε ότι οι εικόνες του Animation θα προέρχονται από ένα φάκελο του δίσκου, θέστε την ιδιότητα ImagesForAnimation και ImageFolderAnimation ως εξής :
PictureBoxFlash1.ImagesForAnimation = ImagesForAnimationEnum.fromImageFolder
PictureBoxFlash1.ImageFolderAnimation = “C:\MyImages”
Ακόμα κι αν ο φάκελος περιέχει άλλου είδους αρχεία, το control θα ξεχωρίσει τα αρχεία bitmap τύπου .bmp, .jpg, .gif, .png.
Δείτε την εφαρμογή επίδειξης που περιέχει αρκετά σχόλια ως τεκμηρίωση.
Παρακάτω παρουσιάζονται οι ιδιότητες, μέθοδοι και τα γεγονότα του control :
1) Image : Το αντικείμενο Bitmap.
2) FlashIn : Kαθορίζει αν θα ενεργοποιηθεί ή όχι
το fade-in.
3) FlashValue : Καθορίζει την ταχύτητα του fade-in (τιμές 1-100. Default η 20).
4) Animating : Kαθορίζει αν θα ενεργοποιηθεί ή όχι
το Animation.
5) AnimationDelay : O χρόνος καθυστέρησης μεταξύ
των εικόνων στο Animation.
6) AnimationMode : Τρόπος Animation.
Μπορεί να είναι Normal οπότε οι εικόνες εμφανίζονται
σειριακά ή Random οπότε
εμφανίζονται
με τυχαία σειρά Παίρνει τιμές από την απαρίθμηση AnimationModeEnum (νέο στην έκδοση
2.1).
7) AnimationLoop : Kαθορίζει αν θα παίζει συνεχώς από
την αρχή το Animation (loop).
8) AnimationLoopTimes : Καθορίζει τον αριθμό των
επαναλήψεων. Αν βάλετε τιμή <=0 τότε έχετε συνεχές Loop. (νέο στην
έκδοση 2.1)
9) ImagesForAnimation : Καθορίζει το είδος της πηγής (από ImageList ή φάκελο). Παίρνει τιμές από την απαρίθμηση
ImagesForAnimationEnum.
10)ImageListAnimation : Δέχεται ένα ImageList ως πηγή εικόνων.
11)ImageFolderAnimation
: Καθορίζουμε ένα path φακέλου
ως πηγή εικόνων.
12)IsPlaying
: Καθορίζει αν παίζει το Animation (read-only).
13)IsPaused
:
Καθορίζει αν έχει παγώσει το Animation (read-only).
1) OnImageChanged() : Ενεργοποιείται όταν αλλάζει η εικόνα.
2) OnStartAnimation() : Ενεργοποιείται όταν ξεκινά το Animation.
3) OnStartAfterPausedAnimation() : Ενεργοποιείται όταν ξεκινά, μετά από πάγωμα, το Animation.
4) OnPausedAnimation() : Ενεργοποιείται όταν παγώνει το Animation.
5) OnStopAnimation() : Ενεργοποιείται όταν σταματά το Animation.
1.
FlashNow :
Εξαναγκάζει να κάνει fade-in στην εικόνα.
2.
PlayAnimation : Ξεκινά το Animation (ακόμα και μετά από πάγωμα).
3.
PauseAnimation : Παγώνει το Animation.
4.
StopAnimation : Σταματά το
Animation.
1)
SizeModeEnum
: Μία απαρίθμηση (Enum) για το mode εμφάνισης της εικόνας. Τρεις τιμές :
CenterImage : H εικόνα εμφανίζεται
κεντραρισμένη.
StretchImage : H εικόνα εμφανίζεται
καταλαμβάνοντας όλο το χώρο του PictureBox.
2)
FlashActionEnum : Απαρίθμηση για τον τύπο του Flashing στο control.
Δύο τιμές :
forShowingWithFlash : Κάνει fade-in.
forShowingNormal : Δεν κάνει fade-in.
Αυτή
η απαρίθμηση χρησιμοποιείται, συνήθως, στη μέθοδο FlashNow.
3)
ImagesForAnimationEnum : Απαρίθμηση για το είδος της
πηγής των εικόνων του Animation. Δύο τιμές :
fromImageList : Από ImageList.
fromImageFolder
: Από φάκελο στο δίσκο.
Αυτή η απαρίθμηση χρησιμοποιείται στην ιδιότητα ImagesForAnimation.
4) AnimationModeEnum : Απαρίθμηση για τον τρόπο του Animation στο control. Δύο τιμές :
Random : Οι εικόνες εμφανίζονται κατά τυχαίο τρόπο. (νέο στην έκδοση 2.1)
Προσθέστε στο ToolBox της VB.NET το PictureBoxFlash control και χρησιμοποιήστε το ελεύθερα στις εφαρμογές σας. Το assembly αρχείο PictureBoxFlash.dll θα το βρείτε στο φάκελο bin.
Αν στα References του project δείγματος χρήσης εμφανίζει με κίτρινο θαυμαστικό το PictureBoxFlash τότε πρέπει να ενημερώσετε το Reference Path του project ώστε να ψάχνει στο φάκελο που έχετε βάλει το dll του control.
1) Στο Solution Explorer κάντε δεξί κλικ στο prοject και επιλέξτε Properties.
2) Στο παράθυρο ιδιοτήτων του project που ανοίγει, πηγαίνετε στο τμήμα Common Properties και Reference Path.
3) Δεξιά, πατήστε το browse button (...) για να βρείτε το Folder όπου βρίσκεται το assembly dll του control στον δικό σας υπολογιστή.
4) Πατήστε το button Update. Σώστε το project, κλείστε το και ξανανοίξτε το. Τώρα, πρέπει να εμφανίζονται όλα κανονικά.
Για οποιεσδήποτε παρατηρήσεις στείλτε e-mail στην παρακάτω διεύθυνση.
mouratx@yahoo.com
Χρήστος Μουρατίδης
Νέες ιδιότητες :
Νέα απαρίθμηση :
Normal : Οι εικόνες εμφανίζονται στη σειρά.
Random : Οι εικόνες εμφανίζονται κατά τυχαίο τρόπο.
Υπερφόρτωση μεθόδου :
Η
μέθοδος PlayAnimation έχει πλέον δύο εκδόσεις. Μία χωρίς παράμετρο, όπου το Animation παίζει
με την τρέχουσα τιμή του AnimationMode και μία όπου περνάμε
ως παράμετρο μία τιμή AnimationMode :
Π.χ PictureBoxFlash1.AnimationMode
= AnimationModeEnum.Normal
PictureBoxFlash1.PlayAnimation()
ή
PictureBoxFlash1.PlayAnimation(AnimationModeEnum.Normal)
.