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

VB.NET Discussion :

Créer une animation dans un contrôle


Sujet :

VB.NET

  1. #1
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut Créer une animation dans un contrôle


    Il faudrait, dans un contrôle Serveur ASP, que je fasse une animation de ce genre: http://www.givainc.com/labs/ibutton_example.htm pour un contrôle qui sera bien sûr, sur des pages ASP.Net

    Comment je pourrais m'y prendre svp ? le tout en VB bien sûr


    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  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
    Bah animer des controls en vb.net oui bien sur...
    Pour le faire il faut connaitre une botte secrete de l'API windows:
    -AnimateWindow ("user32.dll") qui produit des mouvements à des vitesses customizables...avec les flottants.
    Les mouvements qu'on peut simuler avec un timer et control.left sont "sautillants" (jerky) car les cooords des controls sont des integer...

    voici l'ingredient simple que je te propose:
    Un UserControl facile à designer:
    1/ droppe 2 boutons btnOn,btnOff dessus:
    - place les 2 buttons cote à cote dans cet ordre(de droite à gauche )
    - props text "On","Off"
    - Width et Height identiques pour les 2 buttons
    -location du 1er: (0,0)
    -location du 2e: (width du 1er ,0)
    2/Ajuste exactement : Width du Usercontrol = somme des width des 2 buttons.

    Ce qui vient d'etre dit est code en dur dans le usercontrol en exemple qui suit pour plus de clarte

    3/ajoute un fichiler module ModAnimate.vb à ton projet qui contiendra l'essentiel de l'interface API AnimateWindow...
    Le module gere les 2 effets qui nous interesse :
    -slide et roll
    l'interface api elle-meme est simple et recoit 3 parametre(flags):
    -flag effet
    -flag duree en millisecondes
    -flag direction
    Pour rappel l'api windows utilise toujours des flags en integer qu'il combine par des or,and ,xor pour gerer ses cas de messages...scarce api...

    ModAnimate.vb
    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
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
     
    Imports System.Runtime.InteropServices
     
    Module ModAnimate
        '2 enums qui facite la vie avec les flags api
        Public Enum Effect
            Roll
            Slide
        End Enum
        Public Enum Direction
            LeftRight
            RightLeft
        End Enum
        'les flags Roll et Slide
        Private Const AWRoll As Integer = &H0
        Private Const AWSlide As Integer = &H40000
     
        'les flags LeftToRight & RightToLeft
        Private Const AWLeftToRight As Integer = &H1
        Private Const AWRightToLeft As Integer = &H2
     
        'le tres important flag AWHIDE
        Private Const AWHIDE As Integer = &H10000
     
        'le  flag ACTIVATE utile uniquement pour le control TopLevelControl
        '(un form)
        Private Const AWACTIVATE As Integer = &H20000
        Public Sub Animate(ByVal ctl As Control, ByVal peffect As Effect, ByVal msec As Integer, ByVal direct As Direction)
            Dim flags As Integer
            Select Case peffect
                Case Effect.Roll
                    flags = AWRoll
                Case Effect.Slide
                    flags = AWSlide
                Case Else
                    flags = AWRoll
            End Select
     
            'si tu es visible on "ore" avec AWHIDE
            If ctl.Visible Then
                flags = flags Or AWHIDE
            ElseIf ctl.TopLevelControl Is ctl Then
                flags = flags Or AWACTIVATE
            End If
            'suivant direction => "ore" avec AWLeftRight ou AWRightToLeft
            Select Case direct
                Case Direction.LeftRight
                    flags = flags Or AWLeftToRight
                Case Direction.RightLeft
                    flags = flags Or AWRightToLeft
            End Select
     
            Dim ok As Boolean = AnimateWindow(ctl.Handle, msec, flags)
            If Not ok Then
                Throw New Exception("Animation failed")
            End If
     
            ctl.Visible = Not ctl.Visible
        End Sub
        <DllImport("user32.dll")>
        Private Function AnimateWindow(ByVal handle As IntPtr, ByVal msec As Integer, ByVal flags As Integer) As Boolean
        End Function
    End Module
    code 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
     
    Public Class UserControl1
        Public Sub New()
     
            ' Cet appel est requis par le concepteur.
            InitializeComponent()
     
            ' Ajoutez une initialisation quelconque après l'appel InitializeComponent().
            Button1.Text = "On "
            Button1.Font = New Font("arial", 14.0, FontStyle.Bold)
            Button1.AutoSize = True
            Button1.Location = New Point(0, 0)
     
            Button2.Text = "Off"
            Button2.Font = New Font("arial", 14.0, FontStyle.Bold)
            Button2.AutoSize = True
            Button2.Location = New Point(110, 0)
     
     
            Button1.Visible = True
            Button2.Visible = False
            Me.MaximumSize = New Size(Button1.Width + Button2.Width, Button1.Height)
            Me.Size = New Size(Button1.Width + Button2.Width, Button1.Height)
        End Sub
        Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            ModAnimate.Animate(Button1, ModAnimate.Effect.Slide, 130, ModAnimate.Direction.RightLeft)
            ModAnimate.Animate(Button2, ModAnimate.Effect.Slide, 130, ModAnimate.Direction.RightLeft)
        End Sub
     
     
     
        Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            ModAnimate.Animate(Button2, ModAnimate.Effect.Slide, 130, ModAnimate.Direction.LeftRight)
            ModAnimate.Animate(Button1, ModAnimate.Effect.Slide, 130, ModAnimate.Direction.LeftRight)
        End Sub
     
     
    End Class
    a dropper sur un form et utiliser....

    bon code....

Discussions similaires

  1. [FLASH MX2004] Aide pour créer une animation
    Par SnakeTales dans le forum Flash
    Réponses: 5
    Dernier message: 04/08/2005, 10h50
  2. Réponses: 6
    Dernier message: 14/12/2004, 02h47
  3. Réponses: 4
    Dernier message: 18/04/2004, 13h36
  4. Comment créer une Table dans 1 Bdd ACCESS avec Builder??
    Par makandja dans le forum C++Builder
    Réponses: 6
    Dernier message: 17/03/2004, 20h21
  5. Créer une série dans un chart
    Par cyrose dans le forum C++Builder
    Réponses: 5
    Dernier message: 28/11/2002, 11h37

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