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

C# Discussion :

[Interface] Background Dynamic.


Sujet :

C#

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 30
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 192
    Points : 160
    Points
    160
    Par défaut [Interface] Background Dynamic.
    Bonjour, c'est la première fois que je vais poster sans le tag Débutant.

    Alors je vais tacher de bien expliquer mon probleme comme il est peu courant je crois.

    j'ai envie de faire un arriére plan dynamique,
    sa veut dire que l'image dont il consiste (une carte du monde en bitmap) 1024x800 devra se déplacer dans l'application qui ne fait que 600x300 px
    Se déplacer : l'image se "déplacera" (move from x,y to x',y') mais doucement, pas un déplacement instantané avec un effet "smooth". toujours en arrière plan.

    j'imagine que ça ressemblera a

    while(true)
    display picture at x,y
    //Quequechose
    display picture at x+1,y+1
    //Quequechose?

    Si c'est trop difficile ou irréalisable, je me contenterai d'un effet similaire qui est de
    diviser la carte sur 600px pour avoir 4 arrière plan, et puis faire en sorte que l'une apparais après l'autre avec au milieu un effet de "Fading" (disparais doucement en réduisant l'opacité"

    j'espère que je ne vous dérange pas trop

  2. #2
    Membre émérite
    Avatar de laedit
    Homme Profil pro
    Consultant études et développement
    Inscrit en
    Décembre 2006
    Messages
    1 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant études et développement
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 344
    Points : 2 265
    Points
    2 265
    Par défaut
    Bonjour,

    Au niveau technologie, tu utilise Windows Form ou WPF ?
    Car ce dernier serait plus indiqué pour un projet de cette sorte.

    Sinon, ta première méthode peut marcher, il suffit effectivement d'incrémenter x et y dans une boucle while.
    Tu peux même mettre un Thread.Sleep() pour que ça ne s'exécute pas trop vite.


    Sinon, ta deuxième solution sera certainement plus simple mais nécessite une modification de l'image. Pour le fading, là encore une boucle While décrémentant la valeur de la propriété Opacity devrait faire l'affaire.
    Blog - Articles - Framework

    MSDN vous aide, si si, alors n'hésitez pas à y faire un tour avant de poser une question.
    Ah, et n'oubliez pas, Google peut répondre à la majorité de vos questions.

  3. #3
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    plutot que des boucles while qui bloquent l'interface utilisateur (ou alors vont trop vite pour l'effet voulu) il faut utiliser des timers
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  4. #4
    Membre régulier

    Profil pro
    Inscrit en
    Juin 2008
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 92
    Points : 115
    Points
    115
    Par défaut
    Je pense que tu pourrais le faire comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    TimeSpan lastUpdate;
    Vector2 currentPos;
    Vector2 target;
    float velocity;
     
    bool sensTargetX;
    bool sensTargetY;
     
    public void Update() 
    {
      TimeSpan elapsed = DateTime.Now.TimeOfDay - lastUpdate;
      Vector2 dir = currentPos - target;
      currentPos += dir * velocity;
     
      if (sensTargetX == true && target.X < currentPos.X)
         currentPos.X = target.X;
      else if (sensTargetX == false && target.X > currentPos.X)
         currentPos.X = target.X;
     
      if (sensTargetY == true && target.Y < currentPos.Y)
         currentPos.X = target.X;
      else if (sensTargetY == false && target.Y > currentPos.Y)
         currentPos.Y = target.Y;
    }
    public void move(Vector2 newPosition) 
    {
      sensTargetX = newPosition.X > currentPos.X;
      sensTargetY = newPosition.Y > currentPos.Y;
     
      target = newPosition;
    }
    Vector2 est une structure contenant un float X, et un float Y.
    Il faut que tu appelles la méthode Update le plus régulièrement possible.

    Je n'ai pas tester, mais en théorie, ça devrait fonctionner ><

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 30
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 192
    Points : 160
    Points
    160
    Par défaut
    Citation Envoyé par Idrakis Voir le message
    Je pense que tu pourrais le faire comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    TimeSpan lastUpdate;
    Vector2 currentPos;
    Vector2 target;
    float velocity;
     
    bool sensTargetX;
    bool sensTargetY;
     
    public void Update() 
    {
      TimeSpan elapsed = DateTime.Now.TimeOfDay - lastUpdate;
      Vector2 dir = currentPos - target;
      currentPos += dir * velocity;
     
      if (sensTargetX == true && target.X < currentPos.X)
         currentPos.X = target.X;
      else if (sensTargetX == false && target.X > currentPos.X)
         currentPos.X = target.X;
     
      if (sensTargetY == true && target.Y < currentPos.Y)
         currentPos.X = target.X;
      else if (sensTargetY == false && target.Y > currentPos.Y)
         currentPos.Y = target.Y;
    }
    public void move(Vector2 newPosition) 
    {
      sensTargetX = newPosition.X > currentPos.X;
      sensTargetY = newPosition.Y > currentPos.Y;
     
      target = newPosition;
    }
    Vector2 est une structure contenant un float X, et un float Y.
    Il faut que tu appelles la méthode Update le plus régulièrement possible.

    Je n'ai pas tester, mais en théorie, ça devrait fonctionner ><
    Aie , j'ai rien saisie a cette algo;
    Première fois que je vois un vecteur dans du code.
    alors ce que j'ai pas saisie c'est principalement le role de tes deux bool
    bon la je pourrais utilisé la 2eme méthode mais le challenge sera assez petit comparé a ça.
    Seulement, méme avec ta méthode, il faut ajouté une fonction qui va randomiser les targets pour que ça soit pas nulle
    donc je crois que la, je suis encore loin et pas du tout au niveau
    Citation Envoyé par laedit Voir le message
    Bonjour,

    Au niveau technologie, tu utilise Windows Form ou WPF ?
    Car ce dernier serait plus indiqué pour un projet de cette sorte.

    Sinon, ta première méthode peut marcher, il suffit effectivement d'incrémenter x et y dans une boucle while.
    Tu peux même mettre un Thread.Sleep() pour que ça ne s'exécute pas trop vite.


    Sinon, ta deuxième solution sera certainement plus simple mais nécessite une modification de l'image. Pour le fading, là encore une boucle While décrémentant la valeur de la propriété Opacity devrait faire l'affaire.
    Alors moi je sors juste a peine du four , je viens de finir le tuto sur les interfaces et le mec nous a certainement pas parlé de Ce WPF.
    Donc pour l'instant, je ne fais pas la différence, si quelqu'un pouvait m'éclairer >_<

    @2eme méthode, ca ne me dérange pas mais je vais essayé !
    mais je crois qu'il faut que ca décrémente l'opacité de photo1 et incrémente celle de photo2 en meme temps c'est ca ?
    donc au chargement de l'appli il faut charger les 4 photo avec 3 a opacité 0 et une a 100 et puis passé au while direct.
    j'espère que j'ai bien compris >_< !

  6. #6
    Membre émérite
    Avatar de laedit
    Homme Profil pro
    Consultant études et développement
    Inscrit en
    Décembre 2006
    Messages
    1 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant études et développement
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 344
    Points : 2 265
    Points
    2 265
    Par défaut
    Citation Envoyé par F.Saad Voir le message
    Alors moi je sors juste a peine du four , je viens de finir le tuto sur les interfaces et le mec nous a certainement pas parlé de Ce WPF.
    Donc pour l'instant, je ne fais pas la différence, si quelqu'un pouvait m'éclairer >_<

    @2eme méthode, ca ne me dérange pas mais je vais essayé !
    mais je crois qu'il faut que ca décrémente l'opacité de photo1 et incrémente celle de photo2 en meme temps c'est ca ?
    donc au chargement de l'appli il faut charger les 4 photo avec 3 a opacité 0 et une a 100 et puis passé au while direct.
    j'espère que j'ai bien compris >_< !
    Alors pour Windows Forms : MSDN

    Et pour WPF : MSDN aussi

    Pour faire simple, WPF est destiné à remplacer Windows Forms car il utilise la carte graphique au lieu du processeur pour faire les rendu des interface, il sépare bien la partie métier (traitement des donénes, etc...) de la partie interface graphique grâce à un langage dérivé du XML, le XAML et il permet énormément de choses.


    Pour ta deuxième solution, tu peux aussi charger tes images seulement si tu en as besoin. Mais évidemment, seule une aurait sa propriété Opacity au maximum.
    Et pour le fade, tu peux soit décrémenter l'Opacity de l'image courante et incrémenter celle de la nouvelle image, ou faire l'un après l'autre, ça dépend de ce que tu veux comme résultat final.
    Blog - Articles - Framework

    MSDN vous aide, si si, alors n'hésitez pas à y faire un tour avant de poser une question.
    Ah, et n'oubliez pas, Google peut répondre à la majorité de vos questions.

Discussions similaires

  1. Interface Microsoft Dynamics NAV (Navision)
    Par Sayrus dans le forum Microsoft Dynamics
    Réponses: 1
    Dernier message: 06/08/2015, 14h53
  2. Android : AchartEngine grid dynamic background
    Par AndroDevelopper dans le forum Android
    Réponses: 0
    Dernier message: 09/04/2013, 11h36
  3. Background Dynamic Aleatoire
    Par DolomatS dans le forum Général Conception Web
    Réponses: 0
    Dernier message: 02/09/2009, 01h34
  4. [VB6] [Interface] Horloge 7 segments
    Par selenay dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 07/10/2002, 16h15
  5. interface utilisateur avec OpenGL
    Par demis20 dans le forum OpenGL
    Réponses: 6
    Dernier message: 03/10/2002, 12h27

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