IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Silverlight Discussion :

développer un carrousel en c#


Sujet :

Silverlight

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 7
    Par défaut développer un carrousel en c#
    Bonjour.

    Depuis très longemps, je cherche à développer un carrousel.

    L'idée est que les images arrivent par la droite de lécran , descendent en bas et remontent à gauche puis sortent (une espèce de U), un carrousel non circulaire donc (ca c'est pour la description du contexte)

    Mon problème est que je souhaiterais télécharger les images une par une de manière asynchrone (au fur et à mesure qu'elles entrent en scène à droite de l'écran par exemple...)

    Comment gérer cette synchronisation ? Y a t il des design pattern qui m'aideraient ?

    Ensuite j'ai le choix entre mettre des bitmaps dans des canvas, ou bien des control de type bouton, avec styling contenant l'image, pour mieux gérer le onclick ... que faire ?

    Bref si quelqu'un se sent de m'aider dans ce projet ce serait super, je ne m'en sort pas.

  2. #2
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Tu n'as pas trouvé de contrôles tout fait ?

    Sinon pour ton problème ben tu n'a qu'à créer une méthode OnShow dans ta classe CarouselItem qui appelerait une méthode GetImage qui utiliserai un WebClient (asynchrone donc). Je vois pas trop où est-ce que tu as un problème.

    Chaque item s'occupe indépendamment de gérer le download de son image.

  3. #3
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Perso, je pense que le meilleur composant de carroussel, c'est celui-là: http://slflow.codeplex.com

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 7
    Par défaut
    Je n'ai pas trouvé de composant car je cherche à apprendre silverlight, donc je préfère cabler tout moi même, quitte à ce que les performances ne soient pas ultimes )

    C'est surout un problème d'architecture que j'ai, ainsi que de connaissances de silverlight (controle ou pas, etc)...

    Donc imaginons :
    Les images arrivent de la droite, décrivent un V en decendant au centre d'abord, puis remontent vers le bord gauche de l'écran. (je marrangerais pour une trajectoire finale plus arrondie)

    Je dois donc avoir si je t'ai bien suivi,

    Une liste de 30 CarouselItem qui contiendra mes 30 images JPG

    Ces carrouselItems doivent pouvoir avoir un entourage coloré, onmouseover e onmouseclicked et declencher la monté de l'image à la visualisation grand format, au centre, comment faire, xaml ou pas ?)

    Une autre liste, des CarouselItem Présents à l'écran (disons 20)

    J'aurais probablement un Timer qui se déclenche tous les 10eme de seconde par exemple, pour faire avancer les items présents et éventuellement, déclencher l'apparition d'un nouvel element à droite, (et l'effacement de ceux qui sortent)
    Disons : apparition d'un nouvelle élément toutes les 5 secondes (ce qui implique que les éléments précédents ont suffisament avancé : pas d'overlapping prévu)

    Quand lancer le téléchargement du premier élément ?
    (Il est donc impératif que le téléchargement du prochain élément soit fini au moment du prochain affichage 5 secondes plus tard pour ne pas casser l'animation...)

    Je ne veux surtout pas lancer les 30 téléchargement en parallèle, si possible disons 3 simultané, éventuellement 1 par un, pendant le début de l'animation ...

    Bref, je suis perdu. J'ai des briques, mais rien à faire pour assembler le tout

  5. #5
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Citation Envoyé par cneveu Voir le message
    Je n'ai pas trouvé de composant car je cherche à apprendre silverlight, donc je préfère cabler tout moi même, quitte à ce que les performances ne soient pas ultimes )
    Ok mais là, tu ne commences pas par le plus simple....

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 7
    Par défaut
    Bon on doit pouvoir decouper un peu pour simplifier ?

    Disons que l'objectif final est un carousel, et qu'il faudra donc multiplier ce qui suit n fois

    Je cherche a faire un element que j'appelerais faute de connaitre le vocabulaire silverlight : un groupe

    ce groupe doit pouvoir etre positionné sur le layout principal
    il doit pouvoir télécharger une image, et avoir un cadre autour
    il doit pouvoir reagir a un mouseover mouseout
    et reagir à un mouseclick en déclenchant une animation qui présente lmage en taille moins petite

    Dois je selon vous :
    utiliser un bouton, que je traffique à mort niveau look...(styling)
    utiliser du xaml dans mon code c# que j'instancie avec un truc genre xamlreader...
    avoir une ressource xaml (inconnu)
    composer integralement chaque "groupe" avec du code et des children.add

    Bref vous avez vaguement une idée de ce qui pourrait marcher ?


    Sur le papier downloader une image et la présenter ca parait pas infaisable !

  7. #7
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Un contrôle (MonControl) qui hérite ItemsControl avec des MonControlItem.

    Pour ton template c'est comme tu veux : soit un bouton stylé soit un simple Border. Chaque MonControlItem contient une propriété Image qui lance un téléchargement async pour récupérer l'image.

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 7
    Par défaut
    Citation Envoyé par Skyounet Voir le message
    Un contrôle (MonControl) qui hérite ItemsControl avec des MonControlItem.

    Pour ton template c'est comme tu veux : soit un bouton stylé soit un simple Border. Chaque MonControlItem contient une propriété Image qui lance un téléchargement async pour récupérer l'image.
    Je ne doute pas que tu saches de quoi tu parles, mais ça n'est pas mon cas,
    aurais tu un lien ou un exemple

    J'ai vu quelquepart une listview customisée, avec des items qui contenaient notamment une image... mais moi autour je n'ai pas de listview ... j'ai disons un rectangle aux coins arrondis.

    Et comment instancier ces élément, avec du code ? (New MyControl pour chaque image ?)

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 7
    Par défaut
    j'ai un debut de piste

    je clip autour de ma scene : disons 800 600
    je pose ma premiere image en 800 c'est à dire hors visualisation, a l'exterieur
    comme ele est dans larbre visuel, elle se load...mais est invisible car hors champs

    dans son evenement load completed, je lance le timer de l'animation (je sais pas trop comment ) et je pose limage suivante (xaml) dans larbre graphique
    sitot posée, sitot download déclanché pour limage suivante...

    pendant ce temps le timer court et fait rentrer la première image qui est téléchargée puis plus tard la 2nde...

    (ou alors on charge 5 images avant de lancer l'animation ?)

Discussions similaires

  1. Comment Développer en équipe ?
    Par christ_mallet dans le forum Débats sur le développement - Le Best Of
    Réponses: 45
    Dernier message: 19/11/2007, 00h15
  2. Quel outil choisir pour un développement SQL-Server ?
    Par Mouse dans le forum Débats sur le développement - Le Best Of
    Réponses: 23
    Dernier message: 12/08/2003, 06h23
  3. Quel outil pour du développement Client/Serveur (Win XP) ?
    Par jey_bonnet dans le forum Débats sur le développement - Le Best Of
    Réponses: 5
    Dernier message: 02/11/2002, 14h57
  4. [Kylix] Kylix et le développement web...
    Par nahmsath dans le forum EDI
    Réponses: 4
    Dernier message: 24/10/2002, 19h27
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo