-
clipping sur graphics
Bonjour
Avant de m'aventurer en territoire inconnu j'aimerais quelques idées pour savoir si je ne vais pas m'egarer
Voila
J'aimerais pouvoir deplacer des elements sur un graphics chaque element est lui meme dessiné sur un autre graphics
Est-il possible ou prevu de concevoir que mon graphics B est construit sur une zone de mon graphics A ?
En resumé
J'ai une methode qui dessine un truc sur un graphics A
Je prends une zone de ce Graphics A pour en definir un Graphics B
En dessinant sur le Graphics B je dessine sur la surface de Dessin de A dans la zone choisie
Si je veux faire un move je redessine A et je cree un nouveau B a un autre endroit
En l'expliquant ainsi ca me parait tout a fait normal mais je reve peut-etre ?
-
salut
pour moi, le mieux dans ta solution est d'avoir un seul graphics et de passer ce graphique à une méthode "Render" de chaque objet :)
Evidemment, je te conseille d'éviter de faire des userControl dans ce genre de situation :)
Ca revient à ma libraire de forme que j'ai crée et qui permet de faire celà.
(et au pire, quand je veux afficher un control, j'utilise DrawToBitmap() pour m'en sortir :)
ET avec les Regions, on peut faire plein de chose (j'ai découvert dernièrement qu'on pouvait les mettre à l'échelle et les translater - ce qui est super important car si on associe une region à chaque objet graphique, il faut modifier cette région à chaque déplacement de l'objet...
-
Bonjour TheMonz
Je ne suis pas certain d'avoir bien compris ce que tu suggere
Mais je ne suis pas certain non plus d'avoir bien expliqué ce que je veux faire ;)
Veux-tu dire qu'il est possible de definir une "region" sur un graphics et que je vais dessiner dans cette région
Ce que j'aimerais evidemment c'est de pouvoir dessiner dans des cadre relatif a la surface du graphics original
-
beh, le mieux c'est d'avoir plusieurs objets et chaque object dessine ou il veut..
PAr contre, chaque objet appartient à un unique controle qui leur fournit le Graphics pour dessiner :)
-
Mouais
C'est peut etre ca mais je reflechis encore
J'ai une pomme une poire une banane
J'ai une methode pour dessiner la pomme
J'ai une methode pour dessiner la poire
J'ai une methode pour dessiner une banane
Je cree graphics sur un bitmap pour dessiner un arbre
Et puis je voudrais appeller mes methodes Pomme poire bananne qui vont se dessiner dans l'arbre.
Pour chacune je donne une position et une taille dans l'arbre mais (ca doit etre le plus implicite possible)
Au niveau interface, je gere une liste d'objets qui contiennent la methode, la taille la position et le graphics
1 arbre, 3 pommes, 2 bananes une poire
Je peux me debrouiller c'est clair mais j'aimerais ne pas passer a coté de truc simples pour faire ca
EXEMPLE :
J'ai chipoté des mois en calculant des coordonnées relatives d'images dans un pannel avant de découvrir l'existence du TransformMatrix :mrgreen:
-
salut
beh, moi je ferais un object arbre,pomme,poire,banane avec chacun une methode Render(Graphics g);
Et dans un userControl de rendu, je ferais un truc du genre :
OnPaint();
Arbre.Render(g); (ou g est ton graphics recupérer dans l'event de ONPaint()
Pomme.Render(g);
etc...
bien sur, lors de la création de pomme, tu peux avoir passer des infos sur l'arbre, etc...
Franchement, à faire c'est plutot simple et rapide :)
Après, si tu veux bouger les fruits, faut définir une region par objet, et dans le MouseMove de ton userControl, regarder si la souris se trouve dans un des regions de fruits ou arbres, et gérer le truc en conséquence :)
-
Salut TheMonz
Je vois tres bien le principe de ta solution !
Mais c'est la qu'on en arrive a mon idée de base !!
Car si le graphics lui meme définit le cadre et connait sa position, la methode render n'a qu'a dessinner la bananne dans le cadre du graphics
Tandis qu'avec la solution telle que tu l'a presente je dois passer la taille et la position sur le graphics commun et faire la mise a l'echelle eventuelle !
-
oui c exacte
Cela dit, tu peux, au lieu de passer un graphics, passé un bitmap à remplir par la méthode render, et l'appelant sachant ou il doit dessiner la bitmap, le fera lui même :)
Ainsi, le fruit se contentera de remplir son image sans se soucier d'ou celle ci sera ensuite disposée :)
Ca répond peut-etre à ton besoin !!!
-
Salut TheMonz
Ce que tu dis là revient il me semble a l'idée de clipping que j'avais au départ :
Definir un graphics qui serait une region d'un graphics !
Non ?
-
oui sauf qu'au lieu de propager un objet graphic (assez lourd), tu propages uniquement des bitmaps remplies au fur et à mesure pour les objets concernés :)
-
Salut
J'ai encore une interrogation sur l'usage des bitmaps et graphics
Admettons que je souhaite creee un bitmap sur lequel je dois imprimer du texte
Seul un graphics me permet de definir la taille du texte (qui est néammoins fonction du font et pas du graphics)
Or je ne peux pas definir un graphics sans support (bitmap)
Mais comme je ne connais pas la taille exacte que deva avoir le bitmap avant d'avois mesuré avec le graphics cela me semble un noeud gordien
Comment faire sinon definir un bitmap assurément trop grand et couper ensuite ?