Gambas France BETA


Pas de compte ? Incription

Besoin d'une idée de projet pour t'entrainer avec Gambas ? C'est par ici.

12
AuteurMessages
Prokopy#16 Posté le 18/10/2010 à 18:21:00
Kinder Pinguigambix : gné ? des objets virtuels ? on pense bien aux mêmes objets virtuels ?

spheris : tout dépend ce que tu appelles "déplacer". Un déplacement n'est rien d'autre qu'un changement de coordonnées par rapport au temps précédent.
Si on prend ton exemple :

1
Draw.Begin()Draw.Image(0,0,10,10)Draw.End()


Tu n'est pas sans savoir (je l'espère) que les coordonnées de l'images peuvent être remplacées par des variables (disons X et Y).

1
Draw.Begin()Draw.Image(X,Y,10,10)Draw.End()


Si ces variables sont globales (déclarées en haut du formulaire), tu peux les modifier ailleurs, disons par exemple … allez au hasard, l'évènement MouseMove() de ton DrawArea : ;)

1
PUBLIC SUB MonDrawingArea_MouseMove() X = Mouse.X Y = Mouse.YEnd


Et hop ! Ton image suit ta souris ! :)
Ce que les gens ont tendance à oublier quand ils programment, c'est que même notre écran n'est qu'un DrawingArea gigantesque. Tout ce qui se passe dessus tu peux le refaire avec un DrawingArea. Fenêtres, boutons, champs, images … tout est possible. Et avec les évènements Gambas c'est grandement simplifié.

Désolé gambix, je suis peut-être borné, mais je ne vois pas du tout ce que les objets virtuels vienne faire là dedans. Si tu pouvais développer un peu ta réponse ce ne serait pas de refus. :|
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.
gambix#17 Posté le 18/10/2010 à 19:12:00
Faire simple !bon la j'ai une minute, donc,

Un objet virtuel c'est un classe représentant l'objet...

on peu imaginer un tableau d'objet contenant des référence a plusieur classe qui représente le dessin.

une classe dessinObjet serait parente de toute les autres elle a les propriété Left, top, witdh, height

et une fonction _Draw() vide


on a ensuite des classe dessinrectangle, dessinligne, dessinImage qui hérite de la classe dessin objet. et qui on tous une fonction _draw()
qui fait ce qui doit être fait


pour dessiner un dessin on parcour un tableau contenant les reférence a chaque objet.

for each (object)Obj in aDrawing

Obj._Draw()

next

On peut ensuite bien sur imaginer détecter l'objt sous la sourie en parcourant la liste des objets , etc...


voila ce que sont des objet virtuel ... enfin pas tant que ça en fait ... ce sont de vrai objet ... et c'est comme ça que fonctionnes beaucoup des petite chose que vous avez a l'écran .
Moins de texte dans une signature c'est agrandir son espace.
Prokopy#18 Posté le 18/10/2010 à 20:17:00
Kinder PinguiDonc tu vas créer un objet juste our dessiner un rectangle, une ligne, une image, alors que justement tu as des fonctions déjà toutes prêtes pour faire cela ? Pour des objets plus complexes comme des boutons, et pour la gestion d'évènements, d'accord, mais pour un simple rectangle je ne vois pas du tout l'intérêt.
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.
gambix#19 Posté le 18/10/2010 à 21:01:00
Faire simple !tu es dur à comprendre les choses simples ... l'objet sert à stocker les propriétés(position/taille)... comme dans une image sgv chaque élément est défini par un objet xml.... l'idée est de pouvoir bouger , repositionner les éléments contenus dans le drawing area ... mais on a besoin de savoir à tous moments ou ils sont ... mes objets utilisaient les fonction de dessin pour se dessiner ... mais ils ont des propriétés que l'on peut interroger ... à contrario d'une fonction ...


c'est le système de stockage des éléments qui est important là. pas la façon de dessiner...
Moins de texte dans une signature c'est agrandir son espace.
spheris#20 Posté le 23/10/2010 à 13:14:00
Gambix,
Dans le cas d'icones eventuels dessinnés sur une drawarea, comment avec un exemple précis, utilises-tu les objets virtuels ?
;)
gambix#21 Posté le 23/10/2010 à 17:37:00
Faire simple !le code est un peu long a écrire :)


si c'est seulement des icones... je pense que ça doit pouvoir se bidouiller en gtk, iconview et un peu d'appel api externe en c pour le bg.

Moins de texte dans une signature c'est agrandir son espace.
spheris#22 Posté le 23/10/2010 à 17:42:00
donc pour faire simple avec un exemple concret, comment deplaceras-tu une ligne dans une drawarea au moyen de la touche R du clavier ? le tout fait avec un objet virtuel ?
gambix#23 Posté le 23/10/2010 à 20:21:00
Faire simple !Voici :

http://gambasforge.org/cgi-bin/index.gambas?section=code&sub=detail&id=30

Moins de texte dans une signature c'est agrandir son espace.
spheris#24 Posté le 26/10/2010 à 18:48:00
Gambix,
Ton talent et tes connaissances nous sont très précieux sur ce forum. Merci de nous offrir de ton temps et encore MERCI pour cet exemple !
;)
Je commence petit à petit à saisir la puissance d'un tel langage.
La notion d'objet virtuel commence à rentrer petit à petit.
Par contre, je ne sais si c'est mon PC mais le déplacement des icones est d'une lenteur ancestrale.
;) ;)
Prokopy#25 Posté le 26/10/2010 à 20:01:00
Kinder PinguiChez moi aussi c'est très lent. Je sais que mon ordi n'est pas "une bombe", mais quand même … ;)
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.
gambix#26 Posté le 26/10/2010 à 20:38:00
Faire simple !j'ai pas dit que c'était a faire en basic :) ... en C ça marche bien :)

ce que tu peu faire c'est remplacer les objet container par des drawing area ... après tout ..; c'est des conteneur et la gestion des evènement sera gérée en c :)
Moins de texte dans une signature c'est agrandir son espace.
gambix#27 Posté le 26/10/2010 à 20:47:00
Faire simple !en faite ça a l'air prévut

http://gambasdoc.org/help/comp/gb.desktop/desktopfile?v3
Moins de texte dans une signature c'est agrandir son espace.
Prokopy#28 Posté le 11/11/2010 à 03:39:00
Kinder PinguiPar avance désolé gambix, je sais que je vais faire mon vieux chieur, mais non seulement ton truc rame mais en plus j'ai du mal à comprendre la démarche (et la notion d'objet "virtuel-qui-n'en-est-pas-trop-un-en-fait-on-dirait"). :lol!:

Bon j'ai fait un projet similaire à ma sauce histoire de comparer un peu les deux (et peut-être d'enfin nous comprendre ! :drunken: ). Il est sur Gambasforge : http://gambasforge.org/cgi-bin/index.gambas?section=code&sub=detail&id=31 .
Déjà je peux te dire que le mien rame un peu (beaucoup) moins.
Enfin bon on en reparle. ;)

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.
gambix#29 Posté le 11/11/2010 à 12:43:00
Faire simple !Rho prok .. tu fait bien ton age ;)
je vais tester ça
Moins de texte dans une signature c'est agrandir son espace.
12