1 | |||
Auteur | Messages | ||
---|---|---|---|
Wawa | #1 Posté le 6/2/2012 à 17:14:38 | ||
Bonjour, J'ai quelques questions sur le graphisme avec gambas... 1_ Quelle est la bonne méthode pour effacer une DrawingArea ? 2_ Quelle est la bonne méthode pour effacer une Image ? En fait lorsque je retrace et j'affiche plusieurs fois la même scène il semble y avoir une dérive et des ombres apparaissent sur la drawingarea. J'ai fait plusieurs tests et les données numériques ne bougent pas lors des tracés successifs ce qui me laisse penser que l'effacement est incomplet. Si je la resize il y a aussi pleins de traits étranges qui apparaissent lors du tracage suivant, ce qui me laisse encore une fois penser que l'effacement des opérations précédentes n'est pas bon (complet)... Merci pour votre aide et bonne programmation ! Philippe | |||
linuxos | #2 Posté le 6/2/2012 à 17:20:54 | ||
Un peu de sel, de poivre et la crevette sera... | Bonjour, Voir peut être l'option Cached = True/False du DrawingArea Olivier Lorsqu'on s'occupe d'informatique, il faut faire comme les canards... Paraître calme en surface et pédaler comme un forcené par en dessous. | ||
Wawa | #3 Posté le 6/2/2012 à 18:19:12 | ||
Re, Si je mets Cached à False sur la DrawingArea, il y a une erreur qui apparait (Cannot draw outside of Draw event handler....) lors du Draw.Begin(), message que je ne comprends d'ailleurs pas du tout.... Si, à ce propos, je pouvais avoir quelques explications (exemple ?). Merci. Philippe | |||
Jack | #4 Posté le 6/2/2012 à 18:23:26 | ||
Il faut charger la version svn car la fonction cached = true/false générait une erreur 11 Sinon pour utiliser DrawingArea.Cached = True DrawingArea.clear DrawingArea Pour un code démocratique nationalisons Gambas. | |||
Jack | #5 Posté le 6/2/2012 à 18:23:56 | ||
Il faut charger la version svn car la fonction cached = true/false générait une erreur 11 Pour un code démocratique nationalisons Gambas. | |||
Wawa | #6 Posté le 6/2/2012 à 19:06:47 | ||
Re, Bon j'essaye d'éclaircir mon problème... Le truc semble venir du tandem image.clear() immédiatement suivi de image.resize(...). Je précise, il s'agit d'une image en mémoire programme, pas de la drawingarea. Ce que je ne comprends pas c'est que si j'inverse les deux instructions, le paint.begin(image) qui suit donne une erreur.... Je ne vois pas pourquoi.... Pour la propriété cached de la drawing area, après un essai j'ai compris. Ce n'est pas la cause du problème. Cette version svn, ou peut on la récupérer ? Philippe | |||
Flachy Joe | #7 Posté le 6/2/2012 à 19:59:38 | ||
Iguane : Il Gambas Uniquement pour Activer ses NEurones | Salut, Pour récupérer la version de développement, regarde cette page : http://gambasdoc.org/help/howto/svn?fr&v3 Tu peux aussi utiliser cet utilitaire pour télécharger et compiler automatiquement la dernière version : http://gambasforge.org/code-37-mises-a-jour-gb3-svn--version-2.html A+ Flachy Joe | ||
Wawa | #8 Posté le 7/2/2012 à 07:59:09 | ||
Bonjour, Après une soirée d'expérience, toujours peu de résultats probants pour l'instant. En gros et pour résumer : Le code suivant s'exécute mais n'afface pas "complètement" l'image Public Graphimag as new Image(100,100) . . Public sub xxxxx . . Graphimag.clear() Graphimag.resize(500,500) . . Paint.begin(Graphimag) . . Le code suivant provoque une erreur à l'exécution du "Paint.begin": Public Graphimag as new Image(100,100) . . Public sub xxxxx . . Graphimag.resize(500,500) Graphimag.clear() . . Paint.begin(Graphimag) . . Deux questions : Pourquoi une erreur dans le deuxième cas ? Pourquoi ne se fait il pas correctement dans les deux cas ? Mon hypothèse : L'enchainement trop rapide des opérations sur l'objet fait que ces dites opérations ne se finissent pas correctement ! Merci de me faire part de vos conseils et avis. Bonne programmation à tous. Philippe | |||
Prokopy | #9 Posté le 7/2/2012 à 11:21:15 | ||
Kinder Pingui | Le code suivant s'exécute mais n'afface pas "complètement" l'image Lorsque tu appelles image.Clear(), l'image est totalement effacée, c'est-à-dire que ses dimensions sont remises à zéro. Par conséquent, lorsque tu essaies de dessiner dessus, ça plante (on ne peut pas dessinner sur une image aux dimensions nulles). Si tu veux effacer une image (dans le sens de la remplir de vide), utilise la fonction Fill() avec une couleur de fond (blanc par exemple) :
La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand ça marche mais qu'on ne sait pas pourquoi. Quand la théorie rejoint la pratique, rien ne fonctionne et on ne sait pas pourquoi. | ||
1 |