Gambas France BETA


Pas de compte ? Incription

Grab er Gambas3

1
AuteurMessages
lapenduledargent#1 Posté le 4/12/2011 à 10:29:12
Bonjour à tous,

Vous allez me dire "enregistrer un DrawingArea n'est pas difficile, il suffit d'utiliser la commande Grab" mais voilà, un exemple tiré du site de Sphéris ne fonctionne plus en Gb3 :(

1
2
3
4
5
6
7
8
9
10
11
12
13
PUBLIC SUB Button2_Click() 'bouton enregistrer image

DIM MonFichier AS File
DIM MonImage AS Picture

MonImage = DrawingArea1.Grab()
Dialog.Path = sPath
IF Dialog.SaveFile() THEN RETURN
sPath = Dialog.Path
MonFichier = OPEN sPath FOR CREATE
MonImage.Save(sPath)

END


Bon dimanche

Pierre
gambix#2 Posté le 4/12/2011 à 16:40:36
Faire simple !ouaip c'est n'importe koi :)


le truc en faite est simple
tu fait une fonction qui contient tout ce que tu a mis dans _draw



Public sub Dessine()


end

Dans da_draw()

Dessine()

end



Public sub btnEnregistre()
Dim hpic as new picture(100,100, gb.white)
Draw.begin(hpic)
dessine
draw.end
picture.save(fichier)

end


tu vois comment on fait ? il suffit en faite d'avoir un moyen de selectionner l'endroit ou le dessin est effectué.
Moins de texte dans une signature c'est agrandir son espace.
lapenduledargent#3 Posté le 4/12/2011 à 17:28:23
Bonsoir Gambix,

J'ai une première question, gb.white, je le remplace par exemple par 16777215 : http://gambasdoc.org/help/comp/gb.qt/color/white?fr

Ensuite picture.save me retourne une erreur : Picture.save n'est pas statique ?
gambix#4 Posté le 4/12/2011 à 20:39:29
Faire simple !et non
c'est hpic.save
ja m'a trompé :)


c'est du pseudo code il faut corrigé mes bétises :/
Moins de texte dans une signature c'est agrandir son espace.
lapenduledargent#5 Posté le 4/12/2011 à 21:38:55
Bonsoir Fabien,

Et bien j'ai du mal avec ce code...

L'image crée est illisible :cry:

Je te fais parvenir mon code :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
PUBLIC SUB dessine()

Draw.Begin(DrawingArea1)
Draw.Font.Size = 20
Draw.Text("La Pendule d'Argnet (c)", 100, 100)
Draw.End

END

PUBLIC SUB Button2_Click() 'bouton enregistrer image
DIM chemin AS STRING
DIM hpic AS NEW Picture(100, 100)

chemin = Application.Path & "/monfichier.jpg"
PRINT chemin
Draw.begin(hpic)
dessine
draw.end
hpic.save(chemin)

END
lapenduledargent#6 Posté le 6/12/2011 à 08:15:02
Bonjour,

J'ai toujours mon image d'illisible ?

Pierre
gambix#7 Posté le 9/12/2011 à 13:24:02
Faire simple !pff
tu ne suis même pas ce que j'ai dit.. !!

pourquoi tu fait draw.begin(drawingarea) dans dessine !!

ce qui fait que tu ne dessine jamais dans hpic, veut que c'est le dernier élément appelé par draw.begin qui prend la main... donc drawing area.

pour le drawing area tu doit appeler dessine a partir de l'évènement _draw du drawing area. et sans utiliser draw.begin car c'est fait en interne avant l'appel de l'event.

Tu doit aussi avoir cached a false sur le drawing area pour que l'event soit appelé.

et non gb.white tu le replace par color.white (la encore c'est du code pondu trop vite de ma part désolé)...

Parfois c'est pas simple car des chose qui vont de soit pour moi ... ben c'est pas si simple pour vous... mais moi aussi j'en ai bavé avant :)... Benoit m'a beaucoup appris ... pourtant j'tait bon en vb :/ ... mais comme c'était du vb ... ben j'était mauvais de par la mauvaise structure de ce langage . Gambas m'a permis de gouter ensuite a d'autre chose plus simplement. (mais pas autant que l'est gambas)

Moins de texte dans une signature c'est agrandir son espace.
lapenduledargent#8 Posté le 9/12/2011 à 22:39:44
Ah enfin ça fonctionne :cheers:
Merci !

Petit à petit j'avance... Je suis sur les fonctions rogner, rotation, balance... avec DrawingArea
1
DrawingArea1.Resize((DrawingArea1.W - 2), - DrawingArea1.H)


1
2
monimage = monimage.Rotate(Rad(-180))
FonctionAffichageImage


Même pas fait de Vb, je ne connais que Gb ;) ;) mais avec votre aide, ça va aller :)
1