Gambas France BETA


Pas de compte ? Incription

Problèmes de dimensions dans une drawarea

Ce sujet est résolu.

1
AuteurMessages
spheris#1 Posté le 12/4/2012 à 22:00:01
Bonjour,
Je suis confronté à un petit souci de dimensions dans une drawarea.

Je veux dessiner un rectangle dans une drawarea qui a pour dimension une drawarea avec 10 pixels de moins comme ceci :



Je serai tenté d'écrire :

1
2
3
4
PUBLIC SUB bcadre_Click()
Draw.Begin(DrawingArea1)
Draw.Rect(DrawingArea1.X + 10, DrawingArea1.Y + 10, DrawingArea1.Width - 10, DrawingArea1.Height - 10)
Draw.End


Eh bien non, le cadre est mal dimensionné. En faisant par contre :

1
2
3
4
PUBLIC SUB bcadre_Click()
Draw.Begin(DrawingArea1)
Draw.Rect(DrawingArea1.X + 10, DrawingArea1.Y + 10, DrawingArea1.Width - 35, DrawingArea1.Height - 35)
Draw.End


Le cadre est juste comme il faut. Pourquoi avec 35 cela affiche le bon cadre et pas avec 10 ?
Merci de vos réponses
;)
gb.qt, GB2, ubuntu 11.04
Prokopy#2 Posté le 12/4/2012 à 22:17:26
Kinder PinguiDeux raisons à cela :

La première est purement mathématique. Quand tu dessines un carré des dimensions de la DrawArea, et que tu le décales de 10 pixels (disons vers la droite), il va dépasser de 10 pixels vers la droite. Si tu réduis sa largeur de 10 pixels, le côté va arriver pile poil sur le bord de la DrawArea. Il faudra donc retirer 10 pixels de plus (donc 20 pixels au total) pour avoir 10 pixels tout le tour.

La seconde est une erreur : quand tu dessines dans une DrawArea, les coordonnées sont relatives au con supérieur gauche de la DrawArea, ce qui correspond donc à l'origine, de coordonnées (0,0). Or tu utilises DrawArea.X, qui correspond à la position de la DrawArea par rapport à la fenêtre. Et ça m'étonnerais pas que ça fasse 15 pixels. :)

Bref, le bon code serait sans doute quelque chose comme :

1
2
3
4
PUBLIC SUB bcadre_Click()
Draw.Begin(DrawingArea1)
Draw.Rect(10, 10, DrawingArea1.Width - 20, DrawingArea1.Height - 20)
Draw.End


Voilà. ;)
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.
manu#3 Posté le 13/4/2012 à 08:31:32
Avec Gambas ca roule !Question subsidiaire Spheris.

Que veux tu faire en dessinant un carré dans une DrawingArea ? Parce que la solution, en fonction de ce que tu veux faire, c'est peut être de mettre la DrwingArea dans un container, par exemple un panel et de mettre la propriétés du panel "Padding" a 10pixel. Puis tu actives les bordures de la DrawingArea.

Le résultat est en quelques sorte inverse à ce que tu semble vouloir faire, mais bon, peut être que ça peux convenir. C'est en tous cas beaucoup plus simple.
Jeanne d'arc, elle a frit, elle a tout compris ! ;)

Config :
Manjaro linux (excellent !)
XFCE 4.1 (simple et efficace)
Gambas 3 dans les dépots (confort total)
spheris#4 Posté le 13/4/2012 à 12:15:13
Proko, manu,
Merci pour vos réponses.
Je souhaite utiliser la drawarea pour tracer des courbes.
Gb.chart GB2 etant limité, je me lance dans un gb.chart II made in moi.
J'ai besoin de pouvoir choisir la couleur des courbes, choisir diverses options (grille en pointillé, etc...)
Voilà.
A+
et merci pour vos conseils.
;)
manu#5 Posté le 13/4/2012 à 13:47:57
Avec Gambas ca roule !le cadre, c'est donc pour le tour de ton graphe... Ma solution ne conviens donc pas.
Jeanne d'arc, elle a frit, elle a tout compris ! ;)

Config :
Manjaro linux (excellent !)
XFCE 4.1 (simple et efficace)
Gambas 3 dans les dépots (confort total)
spheris#6 Posté le 13/4/2012 à 20:47:17
Tout s'arrange maintenant. ca avance.
;)

Message resolved ! :D
gambix#7 Posté le 14/4/2012 à 09:41:18
Faire simple !je vais ceratainement reprendre un peu le dev de gb.chart prochainement. ... Il le faut... rien que du faite que ça utilise draw au lieu de paint et que il est difficile a étendre ... si je vais assez vite ce sera dispo pour la v 3.2. Mais avec certainement un pb de compatibilité... mais bon le composant était classé alpha..

on peu définir la couleur des lignes dans la v gb2 ... pour les pointillé heu ... je sais plus
Moins de texte dans une signature c'est agrandir son espace.
gambix#8 Posté le 14/4/2012 à 09:43:43
Faire simple !
1
2
Paint.Rectangle(10, 10, DrawingArea.W - 20, DrawingArea.H - 20)
Paint.Stroke
Moins de texte dans une signature c'est agrandir son espace.
1