Schéma technique avec GDIP ?

Poser vos questions de programmation en AutoHotkey
User avatar
SpeedMaster
Posts: 494
Joined: 12 Nov 2016, 16:09

Re: Schéma technique avec GDIP ?

26 Oct 2017, 06:00

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.
User avatar
ScottMeyer
Posts: 33
Joined: 27 Sep 2017, 12:52
Contact:

Re: Schéma technique avec GDIP ?

26 Oct 2017, 07:22

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.
JEE (jeeswg) "Better WinGetPos" : LIEN Forum AHK
AHK Vision Go : LIEN Forum AHK
Simply Backup Script : LIEN Forum AHK
User avatar
joedf
Posts: 8951
Joined: 29 Sep 2013, 17:08
Location: Canada
Contact:

Re: Schéma technique avec GDIP ?

26 Oct 2017, 09:45

Il ya une fonction Canvas.Surface.Rotate(Angle)
https://github.com/Uberi/Canvas-AHK/blo ... otateangle

Je suis pas certain comment on l'emploie...
Image Image Image Image Image
Windows 10 x64 Professional, Intel i5-8500, NVIDIA GTX 1060 6GB, 2x16GB Kingston FURY Beast - DDR4 3200 MHz | [About Me] | [About the AHK Foundation] | [Courses on AutoHotkey]
[ASPDM - StdLib Distribution] | [Qonsole - Quake-like console emulator] | [LibCon - Autohotkey Console Library]
User avatar
SpeedMaster
Posts: 494
Joined: 12 Nov 2016, 16:09

Re: Schéma technique avec GDIP ?

26 Oct 2017, 14:56

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:
User avatar
ScottMeyer
Posts: 33
Joined: 27 Sep 2017, 12:52
Contact:

Re: Schéma technique avec GDIP ?

26 Oct 2017, 15:33

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 ^^
JEE (jeeswg) "Better WinGetPos" : LIEN Forum AHK
AHK Vision Go : LIEN Forum AHK
Simply Backup Script : LIEN Forum AHK

Return to “J'ai besoin d'aide”

Who is online

Users browsing this forum: No registered users and 23 guests