pecheur_de_truite
Messages postés7Date d'inscriptionjeudi 4 mai 2006StatutMembreDernière intervention 5 mai 2006
-
5 mai 2006 à 12:25
katsankat
Messages postés571Date d'inscriptionvendredi 30 décembre 2005StatutMembreDernière intervention12 juillet 2012
-
6 mai 2006 à 11:51
Bonjour à vous,
j'ai déplacé ce sujet depuis le thème Divers vers le thème Graphique.
voici mon problème :
j'aimerais :
- dessiner des traits dynamiquement dans une shape avec la fonction "line" (ça c'est OK)
- mette une couleur de fond à la Shape (ça aussi)
- et surtout que la form dans laquelle se trouve la Shape ait la propriété AutoRedraw = true
comment faire pour que mes traits apparaissent, et restent ?
A cause de la propriété AutoRedraw = true, ils n'apparaissent pas !
Gobillot
Messages postés3140Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention11 mars 201934 5 mai 2006 à 17:19
je corrige le code précédent, il manque le nom.
For i = 1 To nombreline
Unload Line1(i)
Next
en mémoire ça va prendre un peu de place mais pas trop,
je compte quelques centaines de milliers d'octets pour 1200 controles,
c'est pas énorme et c'est un controle qui prend le moins de mémoire,.
en ressource ça prend 10% pendant un temps assez court, donc c'est assez raisonnable
en temps machine je sais pas, j'ai pas testé.
on peut peut être optimiser, et ne pas recharger les mêmes controles à
chaque fois, mais ça va obliger à tester et ça va prendre encore du
temps... à voir
je pense à autre chose:
tu peux remplacer les shapes par des rectangles:
Me.Line (100, 100)-(300, 300), vbRed, BF
mais faudra les redessiner à chaque fois, ou les mettre dans l'évênement Form_Paint, et enlever l'Autoredraw.
pecheur_de_truite
Messages postés7Date d'inscriptionjeudi 4 mai 2006StatutMembreDernière intervention 5 mai 2006 5 mai 2006 à 14:23
Bonjour,
Ce que tu dis est vrai sur toute la ligne !!!
Par contre concernant le contrôle line à mettre au-dessus de la Shape, c'est vrai que c'est une solution ...
MAIS, mon appli représente un sonogramme, dont les amplitudes sont dessinées par des lines, donc je peux pas dessiner + de 1000 contrôles lines ...
De plus actuellement pour effacer le sonogramme, je fais Form.Cls, et ensuite je rappelle la fonctionne derrière pour afficher le sonogramme suivant.
Si vous avez une idée ?
@+
Vous n’avez pas trouvé la réponse que vous recherchez ?
pecheur_de_truite
Messages postés7Date d'inscriptionjeudi 4 mai 2006StatutMembreDernière intervention 5 mai 2006 5 mai 2006 à 15:20
Re,
merci pour ta réponse ...
Donc si je comprends bien tu dessines une seul ligne en graphique sur ta form avec un index = 4000 ou 5000
et inatégnable par ta boucle, c'est bien ça ?
Et ensuite il faut remplacer tous les .cls par des une boucle qui unloade toutes les lignes, c'est bien ça aussi ?
Gobillot
Messages postés3140Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention11 mars 201934 5 mai 2006 à 15:33
oui,
tu met un controle line, un seul avec index = 0
bien sur j'ai exagéré pour le step 0.005
parce que si le pas est trop petit, les controles line ne sont pas
visibles, mais ici c'était des coordonnées calculées pour une fonction
sinus.
pour le cls faut avoir conservé le nombre de line créées.
pecheur_de_truite
Messages postés7Date d'inscriptionjeudi 4 mai 2006StatutMembreDernière intervention 5 mai 2006 5 mai 2006 à 16:17
Ha au fait, penses-tu que ce soit + long en teme de temps machine ou que ça prenne + de ressource CPU ou ressource mémoire de faire ainsi plutôt qu'avec la fonction object.Line ?
katsankat
Messages postés571Date d'inscriptionvendredi 30 décembre 2005StatutMembreDernière intervention12 juillet 20123 6 mai 2006 à 11:51
Depuis quand il vaut mieux charger 25000 contrôles là ou
picture1.Line() et Picture1.cls font l' affaire? Dans un contrôle
utilisateur ça autoredrawe bien en plus.