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 Forms Discussion :

[1.1]Comment éviter le scintellement sur un panel


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Décembre 2006
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 50
    Par défaut [1.1]Comment éviter le scintellement sur un panel
    Bonjour,

    Bien sur avant de créer cette nouvelle discussion j'ai consulter le forum.
    Cependant je ne parviens tjrs pas à éliminer le scintellement de mon panel.

    Mon premier essai était de doublebufferiser mon panel de la maniere suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    public class DoubleBufferPanel : Panel
    {
       public DoubleBufferPanel()
       {
         // Set the value of the double-buffering style bits to true.
         this.SetStyle(ControlStyles.DoubleBuffer |
           ControlStyles.UserPaint |
           ControlStyles.AllPaintingInWmPaint,
           true);
     
         this.UpdateStyles();
       }
    }
    En faisant les modification suivante:

    System.Windows.Forms.Panel panel1 devient DoubleBufferPanel panel1 et
    this.panel1 = new System.Windows.Forms.Panel(); devient this.panel1 = new DoubleBufferPanel();

    Mon panel scintille tjrs.


    Mon deuxieme essai était de créer une bitmap

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    private void Form1_Load(object sender, System.EventArgs e)
    {
          m_bmp=new Bitmap(panel1.Size.Width,panel1.Size.Height); 
    }
    Puis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    private void panel1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
    	{
    		Graphics g = e.Graphics;
    		Graphics gm=Graphics.FromImage(m_bmp);
     
    		gm.Clear(Color.AliceBlue); 
    		gm.DrawRectangle(new Pen(Color.Transparent),0,0,this.panel1.Size.Width,this.panel1.Size.Height);
    		gm.FillRectangle(new SolidBrush(Color.Transparent),0,0,this.panel1.Size.Width,this.panel1.Size.Height); 
    		g.DrawImageUnscaled(m_bmp,0,0); 
    			gm.Dispose(); 
    	}
    Mais ca scintille encore.
    Si quelqu'un connait un moyen...

    Merci d'avance.

  2. #2
    Membre confirmé

    Inscrit en
    Décembre 2004
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 85
    Par défaut
    euh, ton appli fait quoi ?

    Sinon, ca ne marche pas de simplement activer la propriété "DoubleBuffered" de la form ?

  3. #3
    Membre averti
    Inscrit en
    Décembre 2006
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 50
    Par défaut
    En fait, je voudrais faire un casse brique. Donc j'qi un rectangle qui bouge en fonction du dèplacement de la souris et une balle qui rebondit sur les murs.

    Et avec le code suivant, ca ne marche pas. Il faut l'appliquer au panel.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public Form1()
         {
    		InitializeComponent();
     
    		// Code permettant d'utiliser le double buffering
    		SetStyle(ControlStyles.DoubleBuffer, true);
    		SetStyle(ControlStyles.UserPaint, true);
    		SetStyle(ControlStyles.AllPaintingInWmPaint, true);
        }

  4. #4
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Par défaut
    Autant de faire un User Control qui correspondra à la surface de Jeu

    CA sera aussi simple et plus rapide qu'en passant par un Panel

    The Monz, Toulouse

  5. #5
    Membre averti
    Inscrit en
    Décembre 2006
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 50
    Par défaut
    Ok je vais essayer ca.

    Merci.

Discussions similaires

  1. Comment éviter les jointure sur plusieurs tables
    Par xavier81 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 06/02/2011, 15h12
  2. Comment éviter les retours sur l'affichage standard
    Par arnaudperfect dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 22/09/2010, 22h47
  3. Réponses: 2
    Dernier message: 06/12/2006, 09h09

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