Page 2 of 2

Re: Schéma technique avec GDIP ?

Posted: 26 Oct 2017, 06:00
by SpeedMaster
ScottMeyer wrote: on peut certainement augmenter la résolution
Bonjour,
Tu peux activer l'antialiasing s.Smooth := "Best" pour améliorer le rendu.
J'ai aussi ajouter dans mon example comment dessiner un polygone et changer la couleur du fond.

Re: Schéma technique avec GDIP ?

Posted: 26 Oct 2017, 07:22
by ScottMeyer
Salut SpeedMaster,

Superbe :bravo: Merci pour l'exemple

1) J'ai pas trouvé comment on peut creer le " Canvas Surface " à partir de la position X, Y du Gui . On n'a actuellement que la hauteur et largeur.
Quand je rajoute un " MenuBar" ça décale le Canvas donc c'est OK mais si je veux rajouter un titre par exemple avant le canvas et non pas par au dessus mais au dessus. Une idée ? :wtf:

2) Peut-on avec Canvas écrire verticalement ?

Sinon j'ai descendu la ligne :

Code: Select all

s.Text(new Canvas.Brush(0xaaFFFFFF),f,"test `nde dessin",190,200)       ;Text(Brush,Font,Value,X,Y,W = "",H = "")
Après

Code: Select all

Space:
Pour que l'écriture soit au dessus du graphique.

On ressent la mécanique de GDIP mais je trouve que c'est plus clair pour moi :crazy:

Je posterai ici mon code quand j'aurais fini. Ce gui est l'une des pièces principale de mon programme.

Re: Schéma technique avec GDIP ?

Posted: 26 Oct 2017, 09:45
by joedf
Il ya une fonction Canvas.Surface.Rotate(Angle)
https://github.com/Uberi/Canvas-AHK/blo ... otateangle

Je suis pas certain comment on l'emploie...

Re: Schéma technique avec GDIP ?

Posted: 26 Oct 2017, 14:56
by SpeedMaster
ScottMeyer wrote: J'ai pas trouvé comment on peut créer le " Canvas Surface " à partir de la position X, Y du Gui . On n'a actuellement que la hauteur et largeur. Une idée ? :wtf:
Il est possible de contenir l'entièreté du "canvas" dans un " gui control " il faut pour cela spécifier un " hwnd name " pour le contrôle et utiliser la fonction Viewport() avec le "nom hwnd" du contrôle. 8-)
joedf wrote:Il ya une fonction Canvas.Surface.Rotate(Angle)
Oui, il est aussi possible de faire tourner le canvas cela marche pour les dessins mais j'ai pas encore trouvé le moyen de faire tourner le texte.
La rotation s'effectue par rapport au coin supérieur gauche du canvas et non par rapport à son centre, il faut alors compenser en décalant le canvas avec la fonction translate() pour qu'il reste visible.

Voici un nouvel exemple (canvas dans un " text control " et rotation du contenu) ;)

Code: Select all

;https://github.com/Uberi/Canvas-AHK

#include canvas.ahk

gui, -dpiscale 

gui, font, s18 bold

gui, add, text, x10 y10, Mon Titre

gui, font, s12 normal

gui, add, button, x50 y50 grotate, Rotate

gui, add, text, , Le canvas est maintenant contenu dans un " text control " de 400 x 400 `nCliquez sur le canvas pour faire tourner son contenu

gui, add, text, w400 h400 x100 y150 grotate hwndMon_cadre border,       ;create a container control for ex. a text control and specify the hwnd name for ex. hwndMy_container_box

s := new Canvas.Surface(400,400)         ;create a new drawing area

s.Clear(0xFFA0A0A0)                      ;change la couleur du fond en gris

s.Smooth := "Best"                      ;antialiasing (améliore la qualité de l'image) .Smooth := "None" "Good" or "Best"

Gui, +LastFound
v := new Canvas.Viewport(Mon_cadre).Attach(s)                   ; use viewport function with hwnd name of a control to enclose the canvas in it for ex. v := new Canvas.Viewport(My_container_box).Attach(s)

crayon_rouge := new Canvas.Pen(0xFFFF0000,1)
crayon_vert := new Canvas.Pen(0xFF00FF00,1)
crayon_jaune := new Canvas.Pen(0x80FFFF00,5)
b := new Canvas.Brush(0xAAFF00FF)



f := new Canvas.Font("arial",18)
s.Text(new Canvas.Brush(0xaaFFFFFF),f,"test `nde dessin",300,200)       ;Text(Brush,Font,Value,X,Y,W = "",H = "")



gui, +resize
Gui, Show, x10 y10 w800 h600, Canvas Demo

gosub, space
Return

GuiClose:
ExitApp

space:

s.DrawRectangle(crayon_jaune,30,80,300,50)                   ;DrawRectangle(pen,posx,posy,Width,Height)
s.FillRectangle(b,50,50,50,50)                               ;FillRectangle(brush,posx,posy,Width,Height) 
s.DrawEllipse(crayon_jaune,150,150,50,100)                   ;DrawEllipse(pen,posx,posy,Width,Height)
s.Line(crayon_vert,15,20,300,300)                            ;draw a line .Line(Pen,x1,y1,x2,y2)

PointArray:=[[30,200],[30,300],[100,300]]                    ;set an array of points for the polygon [[X1,Y1],[X2,Y2],[X3,Y3]]
s.DrawPolygon(crayon_rouge,PointArray)                       ;draw a polygon (triangle)

v.Refresh()
Return

rotate:
s.Clear(0xFFA0A0A0)

s.Translate(40,-30)                                          ;decaler le contenu du canvas de 40 px vers la droite et 30 px vers le haut
s.rotate(10)                                                 ;effectuer une rotation de 10° ver la droite

s.DrawRectangle(crayon_jaune,30,80,300,50)                   ;DrawRectangle(pen,posx,posy,Width,Height)
s.FillRectangle(b,50,50,50,50)                               ;FillRectangle(brush,posx,posy,Width,Height) 
s.DrawEllipse(crayon_jaune,150,150,50,100)                   ;DrawEllipse(pen,posx,posy,Width,Height)
s.Line(crayon_vert,15,20,300,300)                            ;draw a line .Line(Pen,x1,y1,x2,y2)

PointArray:=[[30,200],[30,300],[100,300]]                    ;set an array of points for the polygon [[X1,Y1],[X2,Y2],[X3,Y3]]
s.DrawPolygon(crayon_rouge,PointArray)                       ;draw a polygon (triangle)



v.Refresh()
return
Cette librairie n's pas encore fini de nous révéler tous ses secrets. Si vous avez d'autres exemples merci de nous le faire savoir. :clap:

Re: Schéma technique avec GDIP ?

Posted: 26 Oct 2017, 15:33
by ScottMeyer
Merci Joedf,
Effectivement avec la documentation sur GitHub que j'avais zappé c'est beaucoup mieux. (je ne connaissais pas le concepts MarkDown, on en apprends tous les jours ;) )

SpeedMaster, toujours aussi efficace dans tes réponses :D le vrai lucky Luke du forum qui fait mouche :clap:

Merci à toi pour la position X Y et de ton aide ;)

Effectivement c'est tout le dessin qui tourne et pas juste un élément ^^