CLASSE DE DESSIN (API) PLUS RAPIDE QUE VB

cs_DARKSIDIOUS
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
- 18 juil. 2005 à 20:46
hugoclavet
Messages postés
10
Date d'inscription
vendredi 5 novembre 2004
Statut
Membre
Dernière intervention
1 mars 2008
- 21 nov. 2005 à 17:19
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/32773-classe-de-dessin-api-plus-rapide-que-vb

hugoclavet
Messages postés
10
Date d'inscription
vendredi 5 novembre 2004
Statut
Membre
Dernière intervention
1 mars 2008

21 nov. 2005 à 17:19
J'ai trouvé un wrapper complet vb6 pour la dll gdi+

http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=42861&lngWId=1

Hugo
cs_Stephane
Messages postés
550
Date d'inscription
vendredi 5 janvier 2001
Statut
Membre
Dernière intervention
23 septembre 2006

23 juil. 2005 à 14:12
ca y est j'ai revue les deleteobject
et apres une minute de redimensionnement intense (lol) le processus (avec la fenetre a taille égale) occupait exactement la meme quantité de mémoire.
cs_Stephane
Messages postés
550
Date d'inscription
vendredi 5 janvier 2001
Statut
Membre
Dernière intervention
23 septembre 2006

21 juil. 2005 à 04:57
ok, je ferai les modifications
merci pour les infos
++
BruNews
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
27
20 juil. 2005 à 23:36
Salut,

comme te le dit DARKSIDIOUS, tu dois absolument libérer la mémoire par DeleteObject sinon ton prog va saturer, ralentir Windows et enfin se faire expulser par Windows.
SelectObject ne fait que placer l'objet GDI spécifié en lieu et place de l'ancien, il n'a pas à libérer la mémoire, on peut très bien avoir à utiliser plus tard l'ancien objet. La libération mémoire est toujours la responsabilité du développeur.

Bonne continuation.
cs_DARKSIDIOUS
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
131
20 juil. 2005 à 22:42
Ben écoute, j'avais fait un ocx qui utilisais environ 100 objets graphiques (pinceaux et brosses surtout), et je ne supprimais pas les anciens objets utilisés, et à chaque raffraichissement du contrôle, je perdais environ 4 Ko de mémoire. Ce n'est pas énorme tu me diras, mais ca suffisait à faire saturer la mémoire graphique (4000 objets graphiques environ) en quelques minutes seulement !).

Et là, le problème est le même pour ta source : tu perds environ 8 à 12 Ko pour chaque redimensionnement de la feuille (ce qui oblige de tout retracer), et environ 10 objets graphiques à chaque fois ! (pour t'en rendre compte, utilise le gestionnaire de processus de Windows, et affiche la colonne "Objets GDI", tu verra vite !

En théorie, lorsque tu fait un SelectObject, Windows est censé libérer les ressources de l'ancien objet graphique, mais il ne le fait pas malheureusement, et du coup, on arrive très vite à la limite des objets graphiques d'un processus !

DarK Sidious
Afficher les 11 commentaires