PictureBoxFlash  Ver 2.1

 Ένα ενισχυμένο PictureBox με δυνατότητες εμφάνισης της εικόνας με fade-in. Στην έκδοση 2.0 υποστηρίζεται και δυνατότητα διαδοχής εικόνων (Animation).  

 

Χρήστος Μουρατίδης, Φεβρουάριος 2007

 

Τι νέο υπάρχει στην έκδοση 2.1

 

Αποσυμπιέσετε με ένα πρόγραμμα συμπίεσης πχ. WinZip τα περιεχόμενα του αρχείου PictureBoxFlash.zip σε κάποιο φάκελο στο δίσκο. Θα δείτε να δημιουργείται ένας φάκελος με όνομα  PictureBoxFlash Test, ο οποίος περιέχει ένα project δείγματος χρήσης του control 

καθώς και το παρόν readme αρχείο. Το project παρέχει μία υποδειγματική εφαρμογή χρήσης του control.

Λίγα λόγια για το PictureBoxFlash 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.

Mέθοδοι

 

1.    FlashNow        : Εξαναγκάζει να κάνει fade-in στην εικόνα.

2.    PlayAnimation   : Ξεκινά το Animation (ακόμα και μετά από πάγωμα).

3.    PauseAnimation  : Παγώνει το Animation.

4.    StopAnimation   : Σταματά το Animation.

 

  Public Αντικείμενα

 

1)    SizeModeEnum : Μία απαρίθμηση (Enum) για το mode εμφάνισης της εικόνας. Τρεις τιμές :

Normal       : H εικόνα εμφανίζεται ξεκινώντας από την άνω αριστερά γωνία.

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. Δύο τιμές :

                                 Normal : Οι εικόνες εμφανίζονται στη σειρά.

                            Random : Οι εικόνες εμφανίζονται κατά τυχαίο τρόπο. (νέο στην έκδοση 2.1)

 

Παρατηρήσεις

Προσθέστε στο ToolBox της VB.NET το PictureBoxFlash control και χρησιμοποιήστε το ελεύθερα στις εφαρμογές σας. Το assembly αρχείο PictureBoxFlash.dll θα το βρείτε στο φάκελο bin.

 

ΠΡΟΒΛΗΜΑ ΜΕ ΤΟ PROJECT ΔΕΙΓΜΑΤΟΣ ΧΡΗΣΗΣ - ΛΥΣΗ.

 

Αν στα 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

Χρήστος Μουρατίδης

 

Τι νέο υπάρχει στην έκδοση 2.1

 

Νέες ιδιότητες :

 

  1. AnimationMode : Προστέθηκε η δυνατότητα να καθορίσουμε τον τρόπο του Animation, δηλαδή αν θα εμφανίζονται οι εικόνες με κανονικό τρόπο (σειριακά) ή κατά τυχαίο τρόπο. Παίρνει τιμές από την απαρίθμηση AnimationModeEnum.

 

  1. AnimationLoopTimes : Καθορίζει πόσες φορές θα επαναληφθεί η σειρά των εικόνων (animation). Αν βάλουμε τιμή <=0 τότε η επανάληψη είναι συνεχής.

 

Νέα απαρίθμηση :

 

  1. AnimationModeEnum :  O τρόπος του Animation στο control. Δύο τιμές :

                                   Normal : Οι εικόνες εμφανίζονται στη σειρά.

                                   Random : Οι εικόνες εμφανίζονται κατά τυχαίο τρόπο.

 

 

Υπερφόρτωση μεθόδου :

 

            Η μέθοδος PlayAnimation έχει πλέον δύο εκδόσεις. Μία χωρίς παράμετρο, όπου το Animation παίζει με την τρέχουσα τιμή του AnimationMode και μία όπου περνάμε ως παράμετρο μία τιμή AnimationMode :

 

Π.χ       PictureBoxFlash1.AnimationMode = AnimationModeEnum.Normal

                PictureBoxFlash1.PlayAnimation()

 

ή

      PictureBoxFlash1.PlayAnimation(AnimationModeEnum.Normal)

 

      

 

.