Accueil > > > GRAPHIQUE UTILISANT LE DOUBLE BUFFERING (ENLÉVE L'EFFET DE CLIGNOTEMENT)
GRAPHIQUE UTILISANT LE DOUBLE BUFFERING (ENLÉVE L'EFFET DE CLIGNOTEMENT)
Information sur la source
Description
Beaucoup se demande pourquoi l'image clignote dès que l'on surcharge un peu trop un graphique, et surtout comment éviter cela. Eh bien cette source montre comment résoudre ce problème en utilisant le "Double buffering", grâce à la classe .NET "BufferedGraphics" Cette source redonne de l'espoir à tous ceux qui croyaient (à tords) que le GDI+ était une librairie mal étudiée et lente par-dessus tout. Pour illustrer le problème de la lenteur j'ai décidé d'ajouter des formes de toutes les couleurs s'agitant dans un panel, le nombre de fps souhaités est réglable et le nombre de formes dessinées à l'écran s'adapte automatiquement, j'atteins pour ma part ~40-50 FPS avec 100 formes dessinées. J'ai choisi de commenter mon code au maximum pour qu'il soit accessible à tous.
Source
- Public Class Form1
-
- ''' C'est le graphique avec lequelle on va dessiner dans un premier temps, puis afficher
- Private BufferredGraphic As BufferedGraphics
-
- ''' C'est l'objet qui permet d'allouer de la mémoire tampon pour stockage du bitmap de dessin
- Private CurrentContext As BufferedGraphicsContext
-
- Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
-
- 'On alloue la mémoire tampon de dessin
- BufferredGraphic = Me.CurrentContext.Allocate(Me.CreateGraphics(), Me.DisplayRectangle)
-
- End Sub
-
- Private Sub Dessin()
-
- 'On dessine dans la mémoire
- BufferredGraphic.Graphics.Clear(Color.White)
-
- 'Déclenche l'évenement OnPaint de la fenêtre
- Me.Form1_Paint(Me, New PaintEventArgs(Me.BufferredGraphic.Graphics, Me.Form1.DisplayRectangle))
-
- End Sub
-
- Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Form1.Paint
-
- 'Affiche enfin à l'écran le graphique contenue dans la mémoire, de manière persistante
- BufferredGraphic.Render()
-
- End Sub
-
- End Class
Public Class Form1
''' C'est le graphique avec lequelle on va dessiner dans un premier temps, puis afficher
Private BufferredGraphic As BufferedGraphics
''' C'est l'objet qui permet d'allouer de la mémoire tampon pour stockage du bitmap de dessin
Private CurrentContext As BufferedGraphicsContext
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'On alloue la mémoire tampon de dessin
BufferredGraphic = Me.CurrentContext.Allocate(Me.CreateGraphics(), Me.DisplayRectangle)
End Sub
Private Sub Dessin()
'On dessine dans la mémoire
BufferredGraphic.Graphics.Clear(Color.White)
'Déclenche l'évenement OnPaint de la fenêtre
Me.Form1_Paint(Me, New PaintEventArgs(Me.BufferredGraphic.Graphics, Me.Form1.DisplayRectangle))
End Sub
Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Form1.Paint
'Affiche enfin à l'écran le graphique contenue dans la mémoire, de manière persistante
BufferredGraphic.Render()
End Sub
End Class
Historique
- 10 octobre 2007 15:54:07 :
- petite faute d'ortographe ^^
il y en a suremement plein d'autres
je m'en excuse.
- 11 octobre 2007 16:17:49 :
- - Suite à un commentaire, le graphique est maintenant dessiné dans l'événement OnPaint.
- Encore des fautes d'orthographes ;)
- 11 octobre 2007 16:19:33 :
- Suite à un commentaire, le dessin de graphique se fait maintenant dans l'événement OnPaint.
- 11 octobre 2007 18:32:22 :
- Mise a jour de la source exemple.
- 02 avril 2008 23:09:12 :
- Suite aux commentaires :
- Utilisation de la classe BufferedGrahics (Gain de 10fps)
et quelques autres améliorations :
- Optimisation du nombre de formes dessinées a l'écran en fontion des FPS.
- Ajout d'un icône
- Utilisation de la compliation conditionnelle pour choisir le mode de fonctionement
A venir :
- Adaptation en écran de veille (complet, avec aperçu)
- Amélioration de la fonction de dégradé
- 03 avril 2008 18:22:04 :
- Ajout d'une classe dégrader,
qui permet de mieu gérer les couleurs, et de créer ses propres dégradés.
cette classe est Serializable pour pouvoir sauvergarder et charger les dégradés créés
- 03 avril 2008 18:24:59 :
- Ajout d'une classe dégrader, qui permet de mieu gérer les couleurs, et de créer ses propres dégradés. cette classe est Serializable pour pouvoir sauvergarder et charger les dégradés créés
- 03 avril 2008 18:30:33 :
- Correction d'une erreur
- 03 avril 2008 18:33:09 :
- Mise a jour de la capture.... lol
- 03 avril 2008 19:34:37 :
- Re modification de la capture, je m'y prend comme un pied...
- 07 avril 2008 20:26:54 :
- Suite à un commentaire:
- Lissage des FPS (avec moyenne glissante)
Et:
- Suppression de la compilation conditionelle car inadapté
- Optimisation du chargement des dégradés (passage en Shared)
- Lorsque on appuis sur la touche espace les informations sur les formes s'affichent
- 08 avril 2008 15:36:10 :
- Optimisation dans l'affichage des couleurs.
La palette n'est calculée qu'une seul fois pour toutes les formes.
- 12 février 2009 14:13:51 :
- Modif mineur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Sorties graphiques un un picture [ par paskal ]
'Jour m'sieurs et dams...Une petite question très bête : Sur une feuille, j'ai une 'image' placée dans un 'frame'....L'action d'un bouton également su
Comment enregistrer une forme en une image de type graphique (bmp,jpg...) ? [ par muzza ]
Question dans le sujet merci
Graphique [ par simofid ]
Je me demande comment changer la taille d'une image, ex:Nous avons une image (foto.jpg) de taille 800x600 et nous voulons transformer sa taille et la
Image et graphique [ par ERICVB7 ]
Bonjour,Je programme en VB.NET (sous XP) et je cherche un code source me permettant de remplir une zone de couleur uniforme dans une image (type bitma
Comment enregistrer une form en une image de type graphique (bmp,jpg...) ? [ par sbouquet ]
Ben voila la question est dans le sujet, j'ai vu qu'elle avait deja était posée de la meme facon mais personne n'avait repondu et comme j'ai le meme p
[GDI / GDI+] Besoin d'aide urgent [ par lcprog ]
Salut tout le monde!Alors si quelqu'un pouvait me sauver la vie, je bloque sur un problème depuis bientot 20h...j'utilise l'api gdi+je voudrai récupér
MSCHART, comment supprimer le clignotement ? [ par denis21 ]
Bonjour à tous, je souhaite faire un graphique à l'aide du composant MSCHART, ce graphique doit etre en temps reel !Et c'est là le probleme, qd j'ai
Exporter un graphique excel [ par Draconagi ]
Voila j'ai un document excel sur lequel il y a plusieurs tableaux et je génére un graphique à partir de ceux la. Le graphique est sur s
Sauver, restaurer image graphique ecran Vb2005 [ par alainvolatile ]
Bonjour à tous, <P class=MsoNormal style="MARGIN: 0cm
Comment exporter un graphique en fichier image ? [ par GetheBeber ]
Bonjour à tous,Malgré bien des efforts, je n'arrive pas à trouver comment exporter un graphique (contrôle MSChart) en fichier imag
|
Derniers Blogs
UNE JOLIE-HORLOGE ET PAS QU'UN PEU !UNE JOLIE-HORLOGE ET PAS QU'UN PEU ! par neodante
Pour les possesseurs d'iPhone, ça y est Bijin Tokei - qui se traduit littéralement en Français par " Jolie Horloge " - est arrivé et GRATUITEMENT s'il vous plaît ! Après la version Tokyo, Hokkaido, night club, racing, Gal, "pour les mademoiselles'", . voi...
Cliquez pour lire la suite de l'article par neodante TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|