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 :

[canvas] flashing au mouvement


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 562
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 562
    Par défaut [canvas] flashing au mouvement
    bonjour

    j'ai un canvas qui contient un autre canvas qui contient des lignes
    comme ceci
    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
     
        public class DrawinCanvas8 : Canvas
        {
            public DrawinCanvas8()
            {
     
            }
     
            protected override void OnRenderSizeChanged(SizeChangedInfo sizeInfo)
            {
                base.OnRenderSizeChanged(sizeInfo);
                Canvas c = new Canvas();
                c.SnapsToDevicePixels = true;            
                c.Height = this.ActualHeight;
                c.Width = this.ActualWidth;
                c.Background = new SolidColorBrush(Colors.Bisque);
                this.Children.Add(c);
     
                for (int x = 0; x < 5000; x += 2)
                {
                    Line l = new Line();
                    l.X1 = x;
                    l.X2 = x;
                    l.Y1 = 0;
                    l.Y2 = this.ActualHeight;
                    l.SnapsToDevicePixels = true;
                    l.Stroke = new SolidColorBrush(Colors.Black);
                    l.StrokeThickness = 1;
                    c.Children.Add(l);
                }
                Canvas.SetLeft(c, 0);
            }
     
            public void Toto()
            {
                double d = Canvas.GetLeft(this.Children[0]);
                Canvas.SetLeft(this.Children[0], d - 1);
            }
        }
    quand j'utilise la fonction toto qui change la position left du canvas contenu (-1) j'ai un flashage a l'affichage
    j'aimerais savoir si quelqu'un aurait une idee pour supprimer cela

    j'ai meme un effet de flash quand je bouge la fenetre

  2. #2
    Membre éprouvé Avatar de Thrud
    Profil pro
    Développeur .NET
    Inscrit en
    Avril 2008
    Messages
    170
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Avril 2008
    Messages : 170
    Par défaut
    Salut,

    J'ai pas de solution pour le flickering, je pense que c'est lié à un problème de raffraichissement vidéo.

    Par contre, quand je redimensionne la fenetre, c'est assez long à se redessiner. Si tu veux juste tracer des lignes dans le fond de ton canvas, tu peux aussi utiliser une drawing brush.

    J'ai mis ça dans un projet de base, et je commente ta fonction qui trace les lignes. visuellement, ça donne la même chose, mais c'est un poil plus rapide.


    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
    
    <Window.Resources>
    <SolidColorBrush x:Key="DarkSquareColor" Color="Black" />
    <SolidColorBrush x:Key="LightSquareColor" Color="Bisque" />
    <DrawingBrush x:Key="TheBrush" Viewport="0,0,2,2" ViewportUnits="Absolute" Stretch="None" TileMode="Tile">
    <DrawingBrush.Drawing>
    <DrawingGroup>
    <GeometryDrawing Brush="{DynamicResource DarkSquareColor}">
    <GeometryDrawing.Geometry>
    <GeometryGroup>
    <RectangleGeometry Rect="0,0,2,2" />
    </GeometryGroup>
    </GeometryDrawing.Geometry>
    </GeometryDrawing>
    <GeometryDrawing Brush="{DynamicResource LightSquareColor}">
    <GeometryDrawing.Geometry>
    <GeometryGroup>
    <RectangleGeometry Rect="2,0,2,2" />
    </GeometryGroup>
    </GeometryDrawing.Geometry>
    </GeometryDrawing>
    </DrawingGroup>
    </DrawingBrush.Drawing>
    </DrawingBrush>
    </Window.Resources>
    
    
    <local:DrawinCanvas8 Background="{StaticResource TheBrush}">
    
    </local:DrawinCanvas8>
    

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 562
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 562
    Par défaut
    merci mais en fait j'ai un probleme plus profond ....
    au depart je voulais tout mettre dans on on render
    voic un tite appli pour tester
    Pièce jointe 49082

    donc l'objectif est d'avoir une règle qu'on peut faire bouger a l'aide du silder du bas
    par exemple le plus simple pour voir le flickering c'est de cliquer sur le bouton gauche du slider du bas (bon c'est pas non plus super evident a voir, mais moi j'y arrive )
    je vais vraiment regreter le double buffering du gdi+

  4. #4
    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
    Effectivement, je vois bien cet effet de flickering

    Tu pourrais partager le projet de test, histoire que je jette un oeil ?

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 562
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 562
    Par défaut
    sans probleme le voici
    y'a pleins de truc en commentaire, mais bon je developpe un editeur de page html un peu tordu en wisywysing
    Pièce jointe 49101

    si tu clique sur la ruler tu risque d'avoir une exception car il manque les curseurs
    il faut aussi passer la ruler en orientation test pour voir mieux l'effet de flickering

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 562
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 562
    Par défaut
    alors thomas rien trouvé ?

Discussions similaires

  1. [FLASH MX] mouvement page d'un livre
    Par totoche dans le forum Flash
    Réponses: 6
    Dernier message: 13/04/2006, 14h15
  2. [FLASH MX] mouvement par actionscript
    Par leanita dans le forum Flash
    Réponses: 5
    Dernier message: 24/02/2006, 14h37
  3. Réponses: 2
    Dernier message: 01/11/2005, 13h25
  4. [FLASH MX] Mouvement rapide
    Par Destiny dans le forum Flash
    Réponses: 2
    Dernier message: 18/03/2005, 15h21
  5. [FLASH MX]le mouvement et les sacades
    Par VincentB dans le forum Flash
    Réponses: 6
    Dernier message: 16/01/2004, 23h42

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