Gambas France BETA


Pas de compte ? Incription

DrawingArea, DrawEvent, Cached, Draw.Circle, ??

Ce sujet est résolu.

1
AuteurMessages
archi12#1 Posté le 22/10/2014 à 11:53:01
Bonjour,
Je me perds entre les explications et exemples donnés pour tracer un cercle, ou une ligne dans une DrawingArea.
Je ne trouve que des exmples incomplets ou trop agés.
Quelqu'un pourrait-il me donner un exemple exaustif pour tracer un cercle dans une DrawingArea lorsqu'on clique sur un bouton et ce sous Gambas 3.5.3 ?
Merci de votre aide.
jeanyvon#2 Posté le 22/10/2014 à 15:24:54
Gambas? Ma! Et gustoSalut
ce code donne un rond noir de la taille de la drawingaera.
1
2
3
4
5
6
7
8
9
10
11
PUBLIC SUB Form_Open()

DrawingArea1.Clear
Draw.Begin(DrawingArea1)
Draw.fillstyle = Fill.Solid

Draw.FillColor = Color.Black
Draw.Circle(DrawingArea1.Width / 2, DrawingArea1.Height / 2, DrawingArea1.Height / 2, 0, 360)
Draw.end

END

Il faut que la drawingaera soit dans une picturebox et que la propriété "cached" de la drawingaera soit à true.
essais de jouer avec la proprieté "Fill"
Vieillir? On peut retarder mais pas y échapper!
archi12#3 Posté le 22/10/2014 à 15:53:40
merci jeanyvon,
mais toujours la meme erreur sur le Draw.Begin :
cannot paint outside of Draw event handler
???????????????????????????
jeanyvon#4 Posté le 22/10/2014 à 16:03:34
Gambas? Ma! Et gustore!

tu n'as pas mis ta drawingaera dans une picturebox
chez moi ça marche aucune raison que ça ne fonctionne pas chez toi...
Vieillir? On peut retarder mais pas y échapper!
archi12#5 Posté le 22/10/2014 à 16:17:03
JeanYvon
ca marche mieux quand la drawingarea est dans une picturebox et que cached est à true !!
merci encore de votre aide
vuott#6 Posté le 22/10/2014 à 23:25:19
Ne cedere ineluctabili possimus
merci jeanyvon,
mais toujours la meme erreur sur le Draw.Begin :
cannot paint outside of Draw event handler
???????????????????????????


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
PUBLIC SUB Form_Open()

DrawingArea1.Clear

END


PUBLIC SUB DrawingArea1_Draw()

Draw.Begin(DrawingArea1)
Draw.fillstyle = Fill.Solid
Draw.FillColor = Color.Black
Draw.Circle(DrawingArea1.Width / 2, DrawingArea1.Height / 2, DrawingArea1.Height / 2, 0, 360)
Draw.end

END
« Vita non suavis esse potest, nec Mors amara. »
linuxos#7 Posté le 23/10/2014 à 03:18:49
Un peu de sel, de poivre et la crevette sera... Il y a dans les exemples fournis avec Gambas3 un programme de démonstration des possibilités d'utilisation du DrawingArea: 'Painting'

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.
jeanyvon#8 Posté le 23/10/2014 à 12:37:43
Gambas? Ma! Et gustoMerci à vuott et à Linuxos
J'ai appris quelque chose : en utilisant l'événement draw d'une drawingaera, on peut se passer d'une picturebox. Du coup j'ai remis mes applications à jour
encore merci
Vieillir? On peut retarder mais pas y échapper!
gambix#9 Posté le 6/11/2014 à 22:29:48
Faire simple !Example d'éllipse avec paint ... Et oui paint c'est le dessin vectoriel sous gambas.

En fait, a partir de gambas3 Draw est une classe qui utilise aussi Paint en interne avec Paint.Antialas=False. Cette classe a été maintenue
afin d'assurer a compatibilité avec les ancienne versions, mais aussi par ce qu'elle donne certain raccourci comme Draw.Image ou Draw.circle (cercle parfait
en une ligne)

Paint.Brush est un peu contraignant au début mais permet une souplesse enorme en autorisant les dégradé par exemple, le tuilage et plein d'autres choses.

Si on desine avec Paint sur un SGVImage on peut même enregistrer le résultat dans un fichier vectoriel au format svg.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
PUBLIC SUB DrawingArea1_Draw()
'Genère le chemin de l'ellipse (x,y,height,width)
Paint.Ellipse(0, 0, DrawingArea1.Width, DrawingArea1.Height )

'Initialie le pinceau en rouge
Paint.Brush = Paint.Color(Color.Red)

'Remplis le fond en rouge et garde le chemin en mémoire (true)
Paint.Fill(TRUE)

'Initialise le pinceau en noir
Paint.Brush = Paint.Color(Color.Black)

'Coloris le tour en noir et détruit le chemin (pas d'argument ou false)
Paint.Stroke

END


Note:

Il n'y a pas besoin d'initialiser le caneva dans l'évènement _Draw avec begin car celui-ci est déja initialisé par le
conteneur appelant l'évènement.
Moins de texte dans une signature c'est agrandir son espace.
gambix#10 Posté le 8/11/2014 à 09:44:55
Faire simple !test
Moins de texte dans une signature c'est agrandir son espace.
gambix#11 Posté le 8/11/2014 à 10:10:09
Faire simple !test
Moins de texte dans une signature c'est agrandir son espace.
1