Double buffering et lenteur d'affichage [Résolu]

cs_takamura 6 Messages postés lundi 17 novembre 2003Date d'inscription 19 novembre 2005 Dernière intervention - 15 mai 2005 à 17:32 - Dernière réponse : Lutinore 3248 Messages postés lundi 25 avril 2005Date d'inscription 27 octobre 2012 Dernière intervention
- 16 mai 2005 à 23:14
Bonjour j'essaye de réaliser un logiciel tout bête qui affiche la
map d'un jeu.je souhaite que l'on puisse zoomer /dezoomer sur cette
carte.

le problème du zoom etait que lorsque je redessinais l'image au
nouvelles echelles l'ecran clignotait. J'ai donc fait de petites
recherche et j'ai tenter d'appliquer le double buffering en un bitmap.



MON PROBLEM EST LE SUIVANT : CA RAME!!!!!!



en fait lorsque je lance mon application et que j'effectue un zoom ,ca
peu prendre environt une minute pour changer l'image. Pour info
j'utilise un map au format jpg dont les dimension sont 8800 * 6000 a
peu pres .



voici ma methode on paint surchagée :



protected override void OnPaint(PaintEventArgs e)

{

map
= new Bitmap(mapFile,mapFile.Width * zoom / 100, mapFile.Height * zoom
/ 100); //je crée mon bitmap a partir de l'image


Graphics Viewable = mapContenair.CreateGraphics(); //je prepare
l'affichage dans mon panel


mapContenair.Size = new Size(mapFile.Width * zoom / 100, mapFile.Height
* zoom / 100); //je met mon panel aux bonne dimensions


Viewable.DrawImageUnscaled(map, 0, 0); //j'affche le contenu du bitmap
dans le panel



}

Y a t'il une solution software a mon probleme ou cela est -il du à la taille "imporante" de mon image ???

merci de votre aide



ps: si j'ai fait le boulet ou s'il fo plus de detail sur le code je m'en excuse d'avance et je mettrais ca le plus vite possible
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
cs_takamura 6 Messages postés lundi 17 novembre 2003Date d'inscription 19 novembre 2005 Dernière intervention - 16 mai 2005 à 18:57
3
Merci
voila nouvelle question suite a des test ......toute les methode que
l'on toruve pour le double buffering marchent tres bien des que l'on
dessine sur une form cependant ce n'est plus du tout le cas lorsqu'il
s'agit d'un panel????

comme j'aimerais utiliser un panel me voila bien enbêté

Merci cs_takamura 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 100 internautes ce mois-ci

Commenter la réponse de cs_takamura
cs_takamura 6 Messages postés lundi 17 novembre 2003Date d'inscription 19 novembre 2005 Dernière intervention - 15 mai 2005 à 17:33
0
Merci
dsl pour les fautes j'aurais du me relire :p
Commenter la réponse de cs_takamura
sebmafate 4947 Messages postés lundi 17 février 2003Date d'inscription 14 février 2014 Dernière intervention - 16 mai 2005 à 09:06
0
Merci
je ne serais te conseiller l'excellent article de TKfé sur www.dotnet-tech.com
(http://www.dotnet-tech.com/tutoriels/double_buffering/)

Sébastien FERRAND

Blog :
http://blogs.developpeur.org/sebmafate</FO< body>
Commenter la réponse de sebmafate
Lutinore 3248 Messages postés lundi 25 avril 2005Date d'inscription 27 octobre 2012 Dernière intervention - 16 mai 2005 à 11:34
0
Merci
hop rapidement comme ca, quelques idees, desole si j'ai mal cerne le probleme:


- Tu crees une image trop grande, zoom uniquement sur la partie visible a l'ecran.


- Pourquoi creer l'object graphics du panel dans cette fonction, utilise ses propres evenements.


- Tu n'utilise pas Graphics.Dispose apres CreateGraphics.


- Tu change la taille de ton panel apres avoir obtenu son object Graphics, fait l'inverse.


- Ton panel est enorme, pourquoi adapter la taille du panel a l'image ?


- calcul le zoom une fois pour toute, pas deux fois.


- Si ton image ou ton control est enorme, ton double buffer l'est egalement.
Commenter la réponse de Lutinore
cs_takamura 6 Messages postés lundi 17 novembre 2003Date d'inscription 19 novembre 2005 Dernière intervention - 16 mai 2005 à 17:46
0
Merci
merci pour tout j'ai deja changé pour n'afficher que la zone de l'image
à afficher mais bon maintenant c comme si mon double buffering ne
fonctionnait pas.....sinon plus de rame!!!

je vais aller voir le site que tu m'a donné Sebmafate ,merci pour vos aides.
Commenter la réponse de cs_takamura
cs_takamura 6 Messages postés lundi 17 novembre 2003Date d'inscription 19 novembre 2005 Dernière intervention - 16 mai 2005 à 17:49
0
Merci
ha oui aussi j'utilise la beta de visual c# express 2005 avec une
beta 2.04..... du framework je me demande si ca y est pas pour quelque
chose...
Commenter la réponse de cs_takamura
Lutinore 3248 Messages postés lundi 25 avril 2005Date d'inscription 27 octobre 2012 Dernière intervention - 16 mai 2005 à 23:14
0
Merci
Il me semble que le double buffering "automatique" marche avec l'object Graphics de l'evenement Paint mais pas avec CreateGraphics.
Commenter la réponse de Lutinore

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.