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

Windows Presentation Foundation Discussion :

[Jeu à gratter] quel contrôle ?


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de anthyme
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 559
    Par défaut [Jeu à gratter] quel contrôle ?
    Bonjour,

    J'aimerai faire un équivalant d'un jeu à grater (banco, millionnaire, etc ...) en WPF.

    En gros une image et par dessus un controle qui pourrait avoir des zone transparente en passant (et maintenant le clic enfoncer) avec la souris dessus.

    Quel contrôle je pourrais utiliser ?

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 214
    Par défaut
    Tu pourrai partir d'un CustomControl.

    Ton CustomControl aurait une DP "ImageSource" qui serait utiliser pour l'affichage en arrière plan.

    Le CustomControl réagirait au évènements Click et MouseMove pour gérer une ObservableCollection de "Marker". Chaque "Marker" aurait une position (X,Y) ce qui permettrait de placer les "Marker" dans un Canvas de manière automatique (binding sur la position). Ce Marker aurait un contrôle template avec une ellipse blanche.

    J'ai écris ça en 3min, c'est juste mon avis, y'a ptet bcp plus simple ou plus malin

  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
    Ca me semble une bonne idée telle que tu la décrit Jerem22

  4. #4
    Membre éprouvé Avatar de anthyme
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 559
    Par défaut
    ok merci je vais creuser dans cette direction (pas l habitude de ce genre de manip !)

    Ce que tu 'appel "Marker" représenterai 1 pixel de l'image ? et il y en aurai autant que de pixels sur l image ?

    je serai pas contre le fait de voir ton code

  5. #5
    Membre expérimenté

    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 214
    Par défaut
    Un Marker serait un autre type de CustomControl tout simple:
    - 2 DP pour la position (X,Y)
    - un control template contenant une ellipse blanche
    - ça ne correspond donc pas directement à un pixel (de toutes façons en WPF tu manipules rien au pixel près)
    - il y en aurait "suffisamment" pour faire apparaître l'image en dessus lors du "grattage"

    Pour mon code, j'ai rien de plus que ce qui est dans ma tête

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    J'aurais plutôt utilisé la propriété OpacityMask, appliquée à l'Image (ou autre contrôle) que tu utilises pour masquer le contenu.
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <Window.Resources>
        <Drawing x:Key="mask">
            <!-- ... -->
        </Drawing>
    </Window.Resources>
    <Grid>
        <Image Name="imgContent" ImageSource="ImageSecrete.png"/>
        <Image Name="imgMask" ImageSource="GrattezIci.png">
            <Image.OpacityMask>
                <DrawingBrush Drawing="{StaticResource mask}"/>
            </Image.OpacityMask>
        </Image>
    </Grid>

    Quand la souris passe avec le bouton enfoncé, tu modifies le Drawing en conséquence, et l'image imgMask devrait devenir transparente à cet endroit, laissant apparaitre imgContent en dessous.

    Bon, c'est juste une idée, j'ai pas trop approfondi, et je sais pas exactement quoi mettre dans le Drawing... (d'ailleurs Drawing est abstract, donc il faudrait plutôt utiliser une classe dérivée...)

Discussions similaires

  1. Quel contrôle pour un calendrier ?
    Par Ggamer dans le forum wxPython
    Réponses: 12
    Dernier message: 02/10/2007, 17h41
  2. conception jeu video quel outils, quel language?
    Par darontankian dans le forum Développement 2D, 3D et Jeux
    Réponses: 6
    Dernier message: 13/02/2007, 20h32
  3. Réponses: 3
    Dernier message: 28/04/2006, 09h51
  4. [Jeu MultiJoueurs] Quel choix de base de données ?
    Par Torpedox dans le forum Décisions SGBD
    Réponses: 9
    Dernier message: 20/03/2006, 10h23
  5. Réponses: 3
    Dernier message: 22/02/2006, 11h23

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