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 :

Développer un led qui clignote à la demande [Débutant]


Sujet :

Windows Presentation Foundation

  1. #1
    Membre à l'essai
    Homme Profil pro
    Chef d'entreprise
    Inscrit en
    Avril 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef d'entreprise
    Secteur : Services à domicile

    Informations forums :
    Inscription : Avril 2014
    Messages : 20
    Points : 13
    Points
    13
    Par défaut Développer un led qui clignote à la demande
    Bonjour,

    Je cherche, sans solution pour le moment , à développer un composant de type LED qui puisse clignoter à la demande et tant qu'on le l'arrête pas.

    sous XAML c'est une simple ellipse nommée Light_1
    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
    <UserControl x:Class="LED"
                 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
                 xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
                 xmlns:local="clr-namespace:Simulateur_CNC"
                 mc:Ignorable="d" 
                 d:DesignHeight="300" Width="300">
        <Grid Margin="0,0,200,177">
            <Ellipse x:Name="Light_1" Stroke="#FFFF4747" Cursor="None" Margin="0,0,0,23">
                <Ellipse.Fill>
                    <RadialGradientBrush  GradientOrigin="0.5,0.5" Center="0.5,0.5" RadiusX="0.5" RadiusY="0.5">
                        <GradientStop Color="Pink" Offset="0.1" />
                        <GradientStop Color="#FFFF4747" Offset="0.6" />
                        <GradientStop Color="Red" Offset="1" />
                    </RadialGradientBrush>
                </Ellipse.Fill>
            </Ellipse>
        </Grid>
    </UserControl>
    et sous VB.net, j'aimerais développer un truc qui changerait simplement la couleur initiale vers une autre puis revenir à la couleur initiale etc... tant qu'on ne l'arrête pas.

    Bref, je n'y arrive pas après moultes essais infructueux

    J'ai bien essayé ce type d'animation, mais ça ne le fait qu'une fois (OK je change la taille et pas la couleur , mais comme c'est récupéré, j'ai fais facile).

    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
       Public Sub Zoom()
            ' Create a DoubleAnimation to animate its width.
            Dim MaDurée As New Duration(TimeSpan.FromSeconds(5))
            Dim MonAnimation As New DoubleAnimation(57, 570, MaDurée)
            Dim MonHorloge As AnimationClock
            'widthAnimation.RepeatBehavior = RepeatBehavior.Forever
            MonAnimation.AutoReverse = True
            MonAnimation.SpeedRatio = 0.5
            'widthAnimation.
            ' Create a clock from the animation.
            MonHorloge = MonAnimation.CreateClock()
     
            ' Apply the clock to the rectangle's Width property.
            'LED.ApplyAnimationClock(Rectangle.WidthProperty, MonHorloge)
            ApplyAnimationClock(Ellipse.WidthProperty, MonHorloge)
            ApplyAnimationClock(Ellipse.HeightProperty, MonHorloge)
        End Sub
    Bref y aurait il une âme charitable qui aurait déjà fait ça ou qui saurait me dire comment faire.

    Merci d'avoir pris la patience de me lire jusque là.

  2. #2
    Expert confirmé
    Inscrit en
    Avril 2008
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 564
    Points : 4 441
    Points
    4 441
    Par défaut
    bonjour

    Voici le code qui, je l'espère , feras ton bonheur...

    Tu semble ignorer totalement l'animation en WPF et les tables de montage séquentiel (aka les Storyboard) ...

    exemple de code qui anime la "led" ellipse avec répétition tant qu'on l'arrête pas ( RepeatBehavior="Forever")...

    un clic souris gauche sur l'ellipse démarre l'animation ...
    un clic souris droit sur l'ellipse stoppe l'animation ...

    code xaml du UserControl:
    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
     
     
    <UserControl x:Class="LedControl"
                 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
                 xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
                 mc:Ignorable="d" 
                 d:DesignHeight="300" d:DesignWidth="300">
        <Grid Margin="0,0,200,177">
            <Ellipse x:Name="Light_1" Stroke="#FFFF4747" Cursor="None" Margin="0,0,0,23"
                     >
                <Ellipse.Fill>
                    <RadialGradientBrush  GradientOrigin="0.5,0.5" Center="0.5,0.5" RadiusX="0.5" RadiusY="0.5">
                        <GradientStop Color="Pink" Offset="0.1" />
                        <GradientStop Color="#FFFF4747" Offset="0.6" />
                        <GradientStop Color="Red" Offset="1" />
                    </RadialGradientBrush>
                </Ellipse.Fill>
                <Ellipse.Triggers>
                    <EventTrigger RoutedEvent="Ellipse.MouseLeftButtonDown">
                            <BeginStoryboard Name="MyBeginStoryboard">
                                <Storyboard  
                                    RepeatBehavior="Forever" >
                                    <ColorAnimation
                                        Storyboard.TargetName="Light_1"
                                        Storyboard.TargetProperty = "(Ellipse.Fill).(RadialGradientBrush.GradientStops)[0].(GradientStop.Color)"
                                        From="Pink" To="Yellow" Duration="0:0:2"
                                        FillBehavior="Stop"/>
                                    <ColorAnimation 
                                        Storyboard.TargetName="Light_1"
                                        Storyboard.TargetProperty = "(Ellipse.Fill).(RadialGradientBrush.GradientStops)[1].(GradientStop.Color)"
                                        From="#FFFF4747" To="#FFFFFFEE" Duration="0:0:2"
                                        FillBehavior="Stop"/>
                                    <ColorAnimation 
                                        Storyboard.TargetName="Light_1"
                                        Storyboard.TargetProperty = "(Ellipse.Fill).(RadialGradientBrush.GradientStops)[2].(GradientStop.Color)"
                                        From="Red" To="#FF0085FF"  Duration="0:0:2"
                                        FillBehavior="Stop"/>
                                </Storyboard>
                            </BeginStoryboard>
                    </EventTrigger>
                    <!-- Stop the Storyboard -->
                    <EventTrigger RoutedEvent="Ellipse.MouseRightButtonUp" SourceName="Light_1">
                        <StopStoryboard BeginStoryboardName="MyBeginStoryboard" />
                    </EventTrigger>
     
                </Ellipse.Triggers>
            </Ellipse>
        </Grid>
     
    </UserControl>
    code behind .vb :Neant
    bon code...

  3. #3
    Membre à l'essai
    Homme Profil pro
    Chef d'entreprise
    Inscrit en
    Avril 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef d'entreprise
    Secteur : Services à domicile

    Informations forums :
    Inscription : Avril 2014
    Messages : 20
    Points : 13
    Points
    13
    Par défaut
    Bonjour et merci Mabrouki,

    Je confirme ne rien connaitre des storyboard, (c'est bien pourquoi je déclare être un débutant pour ne pas dire béotien).
    En plus, honte à moi, je n'ai découvert WPF que la semaine dernière, c'est dire que je suis vraiment un amateur et dans tous les sens du terme

    En fait mon composant led servira pour simuler certain états d'un simulateur (juste pour l'esthétique), elles seront soit éteintes, soit allumées, soit clignotantes.
    Je vais donc avoir 3 procédures qui les animeront, elles mêmes n'interceptant aucune interaction, ce sont des composants "passifs".

    L'exemple fourni n'est pas ce que je veux faire, mais ça me donne une bonne base.
    Encore une fois merci.

    PS: je clôturerais cette discussion en retournant le code définitif quand je l'aurais fini.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Chef d'entreprise
    Inscrit en
    Avril 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef d'entreprise
    Secteur : Services à domicile

    Informations forums :
    Inscription : Avril 2014
    Messages : 20
    Points : 13
    Points
    13
    Par défaut Clôturé par manque de temps
    Merci à tous pour votre aide.
    Vous avez surement remarqués que j'ai mis beaucoup de temps pour répondre.
    En fait de très gros soucis de santé mon obligés à arrêter tout développement en cours et même les développements futurs.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Led qui "presque" clignote
    Par Blue_Strike dans le forum Composants
    Réponses: 5
    Dernier message: 27/04/2007, 21h41
  2. Lumière qui clignote
    Par seeme dans le forum OpenGL
    Réponses: 2
    Dernier message: 06/02/2006, 15h48
  3. Réponses: 2
    Dernier message: 26/08/2003, 14h21
  4. [Linux]Avoir le curseur qui clignote
    Par Yabo dans le forum C
    Réponses: 2
    Dernier message: 06/07/2003, 13h46

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