PhotoAlbum Ver 1.0

Ένα  .ΝΕΤ control που δίνει τη δυνατότητα στους χρήστες να βλέπουν φωτογραφίες, με λεζάντες, σε σελίδες ενός album. Μπορούμε να καθορίσουμε το πλήθος των φωτογραφιών που θα εμφανίζονται σε κάθε σελίδα (πόσες γραμμές και στήλες).  

 

ΣΗΜ : Το control χρησιμοποιεί το PictureBoxCaption v1.2  για την απεικόνιση των φωτογραφιών στη σελίδα.

 

Παρακάτω, βλέπετε ένα παράδειγμα με 2 γραμμές και 3 στήλες, σύνολο 6 φωτογραφίες ανά σελίδα. Επίσης, υπάρχει ένα Navigation panel με κουμπιά μετάβασης στις σελίδες. Ο προγραμματιστής μπορεί να ορίσει να μην εμφανίζεται αν θέλει να προσθέσει ένα δικό του navigation panel. Το control παρέχει τις ιδιότητες και μεθόδους για να το κάνει αυτό.

 

 

Χρήστος Μουρατίδης, Νοέμβριος 2005

 

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

Λίγα λόγια για το PhotoAlbum control

Ο προγραμματιστής μπορεί να χρησιμοποιήσει το control για να παρουσιάζει ένα σύνολο φωτογραφιών (εικόνες bitmap) με λεζάντα στη κάθε μία. Οι εικόνες φορτώνονται σε run-time mode προσδιορίζοντας το path του αρχείου εικόνας και μπορεί να βρίσκονται σε διαφορετικούς φακέλους. Υπάρχει η δυνατότητα αποθήκευσης του album σε αρχεία τύπου .alb (στην πραγματικότητα αποθηκεύονται τα paths των αρχείων εικόνων) ώστε να μπορούν να φορτωθούν αργότερα.

Το control χρησιμοποιεί εσωτερικά ένα αντικείμενο Collection για να κρατάει πληροφορίες για τις εικόνες (path, caption, tooltip). Οι πληροφορίες αυτές, κρατούνται σε ένα αντικείμενο PhotItem. Δηλαδή, με λίγα λόγια, ένα  collection αντικείμενο με όνομα Photos κρατάει αντικείμενα τύπου PhotoItems. Συνεπώς, μπορούμε προγραμματιστικά να διαχειριστούμε τα αντικείμενα PhotoItems της συλλογής Photos (πρόσθεση, τροποποίηση, διαγραφή).  

 

( Σημ : Επειδή το control χρησιμοποιεί εσωτερικά controls PictureBoxCaptions για την εμφάνιση των φωτογραφιών , θα πρέπει να προσθέσετε μία αναφορά στο αντίστοιχο assembly dll όπου το έχετε αποθηκεύσει στο δίσκο. Η αναφορά γίνεται στο τμήμα References του poject.)

 

·     Για να καθορίσουμε 2 γραμμές και 3 στήλες ανά σελίδα 

      

  PhotoAlbum1.RowsPerPage = 2

         PhotoAlbum1.ColumnsPerPage = 3

 

    Συνήθως, ορίζουμε αυτές τις ιδιότητες σε design mode. Αυτόματα τα PictureBoxCaption controls κλιμακώνονται αυτόματα.

 

·        Για να ορίσουμε την απόσταση μεταξύ των φωτό κατά πλάτος (SpaceWidth) και κατά ύψος (SpaceHeight), σε pixels :

           

PhotoAlbum1.SpaceWidth = 10

PhotoAlbum1.SpaceHeight = 6

 

Συνήθως, ορίζουμε αυτές τις ιδιότητες σε design mode. H προσαρμογή γίνεται αυτόματα.

 

·           Προσθήκη  μίας φωτό (αυτόματα προστίθεται στο τέλος της συλλογής)

 

itemPhoto = New PhotoAlbum.PhotoItem()

itemPhoto.ImagePath=”C:\MyImages\Ναυπακτία.jpg

itemPhoto.Caption= “Ναυπακτία

itemPhoto.ToolTip = “Η Ναυπακτία σε τοπίο”

PhotoAlbum1.Photos.Add(itemPhoto)

 

Δημιουργούμε ένα αντικείμενο της κλάσης PhotoItem (που κρατάει πληροφορίες για την εικόνα), βάζουμε τις  σχετικές πληροφορίες (ImagePath, Caption, ToolTip) και κατόπιν το προσθέτουμε στη συλλογή Photos.

 

·           Αν θέλαμε να την τοποθετήσουμε στη δεύτερη θέση της συλλογής θα βάζαμε :

 

PhotoAlbum1.Photos.Add(1,itemPhoto)

 

Οι θέσεις ξεκινούν από το μηδέν.

 

·           Για να διαγράψουμε την πέμπτη φωτό της συλλογής :

 

PhotoAlbum1.Photos.RemoveAt(6)

 

            Θα μπορούσαμε να προσδιορίσουμε ένα συγκεκριμένο αντικείμενο PhotoItem και να το διαγράφαμε ως εξής :          

 

PhotoAlbum1.Photos.Remove(itemPhoto)

 

·           Για να μεταβούμε στη δεύτερη σελίδα του Album, χρησιμοποιούμε τη μέθοδο RefreshPhotosInPage, προσδιορίζοντας τη σελίδα  :

 

PhotoAlbum1.RefreshPhotosInPage(2)

 

Για να ανανεώσουμε την τρέχουσα σελίδα του Album :

 

PhotoAlbum1.RefreshPhotosInCurrentPage()

 

            Μετά από κάθε αλλαγή στη συλλογή Photos πρέπει να καλούμε τη μέθοδο RefreshPhotosInPage ή RefreshPhotosInCurrentPage.

 

·           Για να αντιμεταθέσουμε την πρώτη με την τρίτη φωτό θα καλέσουμε τη μέθοδο Swap της συλλογής Photos.

 

PhotoAlbum1.Photos.Swap(0, 2)

 

·           Για να αποθηκεύσουμε το album :

 

PhotoAlbum1.Save()

 

Θα ζητηθεί από το χρήστη να δώσει ένα όνομα για το αρχείο .alb

 

·           Για να φορτώσουμε τις εικόνες από ένα αρχείο album :

 

PhotoAlbum1.LoadPhotos(C:MyImages\myAlbum.alb")

 

·           Για να μην εμφανίζεται το Navigation Panel :

 

PhotoAlbum1.NavigationVisible = False

 

Πλήθος άλλων ιδιοτήτων υπάρχουν (π.χ. To Font, το BackColor  για τις λεζάντες, το mode, το BorderStyle για τις εικόνες κ.α.). Δείτε παρακάτω τον πίνακα που παρατίθεται.

 

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

 

Παρακάτω παρουσιάζονται οι ιδιότητες, μέθοδοι και τα γεγονότα του control :

Ιδιότητες                                 

  

1)    RowsPerPage            : Πόσες γραμμές από φωτό θα έχει η σελίδα.

2)    ColumnsPerPage         : Πόσες στήλες από φωτό θα έχει η σελίδα.

3)    SpaceWidth            : Η απόσταση σε μεταξύ των φωτό κατά πλάτος, σε pixels.

4)    SpaceHeight           : Η απόσταση σε μεταξύ των φωτό κατά ύψος, σε pixels.

5)    ImageBackColor        : Το BackColor των εικόνων.

6)    ImageBorderStyle        : Το ΒorderStyle των εικόνων.

7)    ImageSizeMode          : Το mode εμφάνισης των εικόνων, τύπου ImageSizeModeEnum (Center, Normal, Stretch).

8)    CaptionBackColor        : Το BackColor των λεζάντων.

9)    CaptionTextAlign        : H στοίχιση του Κειμένου του Caption.

10)CaptionHeight           : Το ύψος των λεζάντων, σε pixels.

11)CaptionBorderStyle      : Το ΒorderStyle των λεζάντων.

12)CaptionVisible          : Να είναι ορατές οι λεζάντες;

13)InfoPageBackColor       : Το BackColor της εμφάνισης πληροφοριών (τρέχουσα σελίδα / πλήθος) στο Navigation panel.

14)InfoPageForeColor       : Το ForeColor της εμφάνισης πληροφοριών στο Navigation panel.   

15)InfoPageFont            : Το Font της εμφάνισης πληροφοριών στο Navigation panel

16)NavigationVisible       : Να είναι ορατό το Navigation Panel;

17)PageLabelVisible        : Να είναι ορατό το Label “Σελίδα :  στο Navigation Panel;

18)CurrentPage             : O αριθμός της τρέχουσας σελίδας. (ReadOnly)

19)NbrOfPhotosInAlbum      : Το πλήθος των φωτό στο album. (ReadOnly)

20)NbrOfPhotosInPage       : Το πλήθος των φωτό στη σελίδα. (ReadOnly)

21)NbrOfPages            : Το πλήθος των σελίδων του album.  (ReadOnly)

Γεγονότα

 

1)    OnImageChanged()     : Ενεργοποιείται όταν αλλάξει η εικόνα σε ένα PictureBoxCaption. Παρέχει το PhotoItem του PictureBoxCaption όπου

  έγινε η αλλαγή.

2)    OnImageMouseMove()   : Ενεργοποιείται όταν μετακινείται το mouse πάνω σε μία εικόνα. Παρέχει το PhotoItem του PictureBoxCaption όπου

γίνεται η μετακίνηση.

 

3)    OnImageClick()       : Ενεργοποιείται όταν γίνεται click σε μία εικόνα. Παρέχει το PhotoItem του PictureBoxCaption όπου έγινε click.

4)    OnImageDoubleClick() : Ενεργοποιείται όταν γίνεται doubleclick σε μία εικόνα. Παρέχει το PhotoItem του PictureBoxCaption όπου έγινε

  doubleclick.

 

5)    OnImageEnter()       : Ενεργοποιείται όταν εισέρχεται το mouse σε μία εικόνα. Παρέχει το PhotoItem του PictureBoxCaption όπου

γίνεται η είσοδος.

 

6)    OnImageMouseHover()  : Ενεργοποιείται όταν ίπταται το mouse πάνω σε μία εικόνα. Παρέχει το PhotoItem του PictureBoxCaption όπου

   γίνεται η πτήση.

 

7)    OnImageLeave()       : Ενεργοποιείται όταν εξέρχεται το mouse από μία εικόνα. Παρέχει το PhotoItem του PictureBoxCaption όπου

  γίνεται η έξοδος.

 

 

Mέθοδοι

 

1)    RefreshPhotosInPage       : Μεταβαίνει σε μία σελίδα.

2)    RefreshPhotosInCurrentPage : Ανανεώνει τις φωτό στην τρέχουσα σελίδα.

3)    GetPictureBoxCaptionSize   : Επιστρέφει το μέγεθος (τύπου Size) ενός PictureBoxCaption

4)    Save                        : Αποθηκεύει το album σε αρχείο .alb. Ζητάει, από το χρήστη, να καθορίσει όνομα και θέση αποθήκευσης.   

5)    LoadPhotos                  : Φορτώνει τις φωτογραφίες από ένα album αρχείο.      

 

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

 

1)    Συλλογή Photos, κλάσης PhotoCollection. Αποτελεί ένα κλασσικό αντικείμενο Collection με όλες τις ιδιότητες και μεθόδους που κληρονομεί από την κλάση System.Collections.CollectionBase . Επιπρόσθετα, έχει τη μέθοδο Swap που αντιμεταθέτει δύο στοιχεία.

Κάθε θέση αποθηκεύει αντικείμενα τύπου PhotoItem.

 

2)    PhotoItem : Κρατάει πληροφορίες για τις εικόνες. Συγκεκριμένα περιέχει τις ιδιότητες :

                                                                     i.      ImagePath : Το path του αρχείου εικόνας bitmap (.bmp, jpg, gif, png κλπ)

                                                                   ii.      Caption      : Η λεζάντας της εικόνας.

                                                                 iii.      ToolTip      : Το ToolTip όταν το mouse στέκεται πάνω από την εικόνα.

     

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

Πριν προσθέσετε το control στο Toolbox βεβαιωθείτε ότι έχετε συμπεριλάβει σε αυτό το PictureBoxCaption v1.2 control,  διότι τo χρησιμοποιεί εσωτερικά.

 

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

 

Πριν τοποθετήσετε το control στη φόρμα βεβαιωθείτε ότι έχετε προσθέσει ήδη μία αναφορά στo PictureBoxCaption v1.2, στο τμήμα References του έργου στο Solution Explorer.

 

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

 

Αν στα References του project δείγματος χρήσης εμφανίζει με κίτρινο θαυμαστικό το PhotoAlbum τότε πρέπει να ενημερώσετε το 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, κλείστε το και ξανανοίξτε το. Τώρα, πρέπει να εμφανίζονται όλα κανονικά.  

 

Θα χρειαστεί, ενδεχομένως πρώτα, να διορθώσετε τα Reference Paths για τα CriteriaControl και SortControl.

 

Εναλλακτικά, ανοίξτε με το WordPad το αρχείο PhotoAlbum.vbproj και μεταβείτε στο tag <References>. Εκεί, βρίσκονται όλες οι εξαρτημένες αναφορές του έργου. Διορθώστε το attribute HintPath για κάθε αναφορά για το PictureBoxCaption και PhotoAlbum σύμφωνα με τις θέσεις που τα έχετε βάλει στο δίσκο.

Επικοινωνία

Για οποιεσδήποτε παρατηρήσεις στείλτε e-mail στην παρακάτω διεύθυνση.

 

mouratx@yahoo.com

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