Page 1 sur 4

Relier graphiquement deux Gadgets [Resolu]

Publié : dim. 03/janv./2010 20:22
par Kwai chang caine
Bonjour la famille

J'essaie de faire un "Logigramme" tout simple, mais alors tout simple

Image

J'ai pas mal avancé, mais il me reste a faire les grandes fleches.
J'ai demandé sur le US, si y'avais un moyen d'avoir un gadget qui aurait une ligne dedans et qui pourrait s'etirer, enfin c'est une de mes idées, mais y'en a peut etre d'autres

Je voudrais faire ce genre de fleche toute simple
Image

ARTIC m'a proposé de dessiner sur la fenetre.
J'y avais aussi pensé, mais pour effacer ça va pas etre facile, et pour le deplacer ....pas mieux :(

Si "quinquin" a une idée....simple..mais simple
Car apres les fetes, j'me sens balloné...et un rien me rend malade :roll:

Si vous pouviez ne pas me parler de GDI....ce serait gentil.
Car j'ai été traumatisé pour au moins un mois à la vue de cet A380 :(

Merci de vos idées
Bonne soirée

Re: Relier graphiquement deux Gadgets

Publié : lun. 04/janv./2010 7:26
par kernadec
bjr KCC
si tu souhaite en plus imprimer cet organigramme
ca va pas etre facile avec des spirites,
le mieux est d'utiliser une police de symboles, va voir chez dafont.com
et l'avantage de la police l'impression est facile a gérer et le rendu est top.
d'autant qu'avec la 440 tu as le moyen sans API d'orienter les textes
sinon pour tester tu as dans c:\windows\fonts \WINGDNG3.TTF
des fontes freeware arrows ici:
http://www.fontfreak.com/charactermaps/c/CarrArrows.htm
http://www.fontfreak.com/charactermaps/ ... inters.htm
Cordialement

Re: Relier graphiquement deux Gadgets

Publié : lun. 04/janv./2010 11:02
par Kwai chang caine
Merci de ta reponse...je n'avais pas pensé à ça. :roll:
Non je n'avais pas l'intention d'imprimer, car justement je fais ça pour y voir plus clair dans ma tete.
J'ai tellement de projets en cours, que je sais plus ou j'en suis :oops:

Ce qu'il me fallait, c'est un champ qui n'est pas limité a gauche à droite, dessus, dessous
Que je puisse me deplacer, en fait que l'ecran ne soit qu'une petite "lucarne" qui entrevoie une partie du projet.

Et justement des que l'on peut imprimer, et ben ça rentre pas sur une feuille, donc ça reduit et on peut rien lire, et c'est le bordel :cry:
J'aurais pu faire avec excell, ça aurait été encore le plus pratique, mais j'aurais préféré avoir un truc tout simple, qui ne depend d'aucun logiciel, car si un jour je suis sur un PC qui n'a pas excell .....

Pour les polices, c'est une bonne idée, mais je crois que l'on est obligé de les installer dans le rep "Font" de windows...et c'est la que ça va coincer, car comme je l'ai dit il faut que mon giciel soit independant :(

En tout cas merci, je ne connaissais pas ces polices speciales 8)

Re: Relier graphiquement deux Gadgets

Publié : lun. 04/janv./2010 11:34
par Ar-S
Et en utilisant de simple image gadget ? pourquoi ça ne le ferait pas ?

Une image de rectangle qui est le "corps" des flèches (1), une image par direction de flèche (4)
ça fait 5 images toutes petites à utiliser, ensuite tu dois pouvoir faire des groupes de gadget corps+boutfleche et lorsque tu redimensionnerais, seul le gadget corps s'étirerait . avec Pureresize en prime, ça doit être assez faisable

Re: Relier graphiquement deux Gadgets

Publié : lun. 04/janv./2010 11:41
par kernadec
bjr KCC
pour tes applications, voila un programme pour la création de procédure d'installation
gratuit ici: http://www.jrsoftware.org/isdl.php
le programme à télécharger est celui ci: ispack-5.3.6.exe (version us désolé)
mais pour la prise en main utilise google translate sur son site
malgré cela son utilisation est assez intuitive le script très clair avant sa compilation.

Cordialement

Re: Relier graphiquement deux Gadgets

Publié : lun. 04/janv./2010 11:44
par Fred
C'est celui utilisé par PureBasic, très bon et flexible.

Re: Relier graphiquement deux Gadgets

Publié : lun. 04/janv./2010 13:46
par Kwai chang caine
@KERNADEC
Merci pour ton lien...des que j'aurais fini une de mes dizaines d'appli en cours... :oops: je l'utiliserais :wink:
Et en plus si j'ai la bénédiction de FRED.....que demande le peuple :mrgreen:
Ar-S a écrit :Et en utilisant de simple image gadget ? pourquoi ça ne le ferait pas ?
Une image de rectangle qui est le "corps" des flèches (1), une image par direction de flèche (4)
ça fait 5 images toutes petites à utiliser, ensuite tu dois pouvoir faire des groupes de gadget corps+boutfleche et lorsque tu redimensionnerais, seul le gadget corps s'étirerait . avec Pureresize en prime, ça doit être assez faisable
Tu va pas me croire, mais j'ai pensé à ça dans la voiture pendant mes 3 heures de bouchons a me les geler, car j'ai pas de chauffage dans mon espace 2...
Tiens ça me fait penser....faudra que je regarde si dans les nouvelles voitures en plus de faire du froid quand y fait chaud dedans...y'en aurais pas qui font du chaud quand y fait froid dehors :roll:
Parce que jeune, on avait pas froid dans les camions militaires grands ouverts en allemagne à -20° :D
Mais maintenant malgré que je sois equipé "Doudoune inside", bas j'me les suis pelé tout le trajet ... :?

Bref j'ai pensé aussi au corp, qui serait rallongeable a volonté, mais c'est l'histoire de coller les gadgets qui me fait peur.
J'ai passé 15 jours a chercher un code qui collait deux fenetres, et a la fin j'y suis jamais arrivé, y'a fallu que je passe en MDI..alors j'ai un mauvais souvenir des objets qui "devraient" rester collé et qui veulent toujours divorcer :?
Mais tu as raison, ce serait une des solutions les plus propres, si je trouve un code super glue qui marche :lol:

Autrement roulement de tambour...KCC y s'est lancé dans le graphisme....
Bon c'est encore pas "AVATAR"....mais j'ai une fleche, comme les "Nindiens" :mrgreen:
Par contre j'ai pas compris comment je pouvait la faire plus epaisse ?? :roll:
Il me reste aussi a la redimentionner automatiquement...voila "ouqu'j'ensuis" :oops:

Code : Tout sélectionner

Enumeration
 #Fenetre
 #Image
 #FondBlanc
 #ImageGadget
EndEnumeration

Hauteur = 200
Largeur = 400

Procedure DessineFleche(x, y)
 
 StartDrawing(ImageOutput(#Image))
  Box(0, 0, x, y, RGB(255, 255, 255))
  LineXY(0, 10, x - 10, 10, RGB(226, 23, 29)) ; Horizontale
  LineXY(x - 10, 10, x - 10, y - 10, RGB(226, 23, 29)) ; Verticale
  LineXY(x - 10, y - 10, x - 15, y - 20, RGB(226, 23, 29))
  LineXY(x - 10, y - 10, x - 5, y - 20, RGB(226, 23, 29))
 StopDrawing()
 
 RedrawWindow_(WindowID(#Fenetre), 0, 0, #RDW_INVALIDATE|#RDW_UPDATENOW)
 
EndProcedure
 
OpenWindow(#Fenetre, 417, 181, 600, 500, "New window ( 0 )",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
CreateImage(#Image, Largeur, Hauteur)
ImageGadget(#ImageGadget,100, 100, 0, 0, ImageID(#Image))
DessineFleche(Largeur, Hauteur)
   
Repeat  
 
 Evenement = WaitWindowEvent()
 
 Select Evenement
  
  Case #WM_MOUSEMOVE
  
   MouseX = WindowMouseX(#Fenetre)
			MouseY = WindowMouseY(#Fenetre)
   
			If GetAsyncKeyState_(#VK_LBUTTON)
    
    DessineFleche(mousex - GadgetX(#ImageGadget), mousey - GadgetY(#ImageGadget))
   	
  	EndIf			
 
 EndSelect
 
Until Evenement = #PB_Event_CloseWindow
Code remis à jour 2 fois

Re: Relier graphiquement deux Gadgets

Publié : lun. 04/janv./2010 15:52
par kernadec
j'ai modifié un peu ton code, peut etre c'est cela que tu veux obtenir.
pour les épaisseurs et les styles ainsi que les embouts de lignes styles flèches arrondis,
et aussi les blocs, les cercles remplis avec des patterns.etc
il faudrait que l'on puisse obtenir cela en natif, plutôt que de passer par les APIs

Code : Tout sélectionner

Enumeration
#Fenetre
#Image_0
#Image_1
#FondBlanc
#ImageGadget
EndEnumeration
hdc.l=0
Hauteur = 200
Largeur = 400
CreateImage(#Image_0, Largeur,Hauteur) 
CreateImage(#Image_1, Largeur,Hauteur)
Procedure DessineFleche(x, y)
StartDrawing(ImageOutput(#Image_1))
  DrawImage(ImageID(#Image_0), 0, 0)
  LineXY(0, 10, x - 10, 10, RGB(226, 23, 29)) ; Horizontale
  LineXY(x - 10, 10, x - 10, y - 10, RGB(226, 23, 29)) ; Verticale
  LineXY(x - 10, y - 10, x - 15, y - 20, RGB(226, 23, 29))
  LineXY(x - 10, y - 10, x - 5, y - 20, RGB(226, 23, 29))
  StopDrawing()
 SetGadgetState(#ImageGadget,ImageID(#Image_1))
 RedrawWindow_(WindowID(#Fenetre), 0, 0, #RDW_INVALIDATE|#RDW_UPDATENOW)
EndProcedure

OpenWindow(#Fenetre, 417, 181, 600, 500, "New window ( 0 )",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
ImageGadget(#ImageGadget, 100, 100, Largeur,Hauteur, ImageID(#Image_1))
StartDrawing(ImageOutput(#Image_0))
 FillArea(0,0,RGB(255,255,255),RGB(255,255,255))
StopDrawing()
DessineFleche(Largeur, Hauteur)
		
Repeat  

Evenement = WaitWindowEvent()

  Select Evenement
	
	Case #WM_MOUSEMOVE
	
		MouseX = WindowMouseX(#Fenetre)
		MouseY = WindowMouseY(#Fenetre)
		
		If GetAsyncKeyState_(#VK_LBUTTON)
		
		DessineFleche(mousex - GadgetX(#ImageGadget), mousey - GadgetY(#ImageGadget))
				
		EndIf         

   EndSelect

Until Evenement = #PB_Event_CloseWindow
Cordialement

Re: Relier graphiquement deux Gadgets

Publié : lun. 04/janv./2010 16:08
par Kwai chang caine
Nadine ZOBI il marche super trop de la balle ton code 8O
Merci merci, t'est trop gentil 8)

J'commencais à désesperer :(
Alors j'avais essayé une autre methode, celle que ARS avait dit, et que j'avais pensé en me gelant les narpions ce matin :D

En fait, de ce que j'ai compris, on peut pas augmenter l'epaisseur de la ligne 8O
Alors la FRED.....j'te dis pas bravo :?
Faut faire des box....et quand tu fais des BOX ...bah c'est le BOXON...parce que les BOX elles peuvent pas etre de biais comme je veux pour mes bouts de fleches :(
Bref comme dirait bernard blier dans le grand blond avec une chaussure noire :
On tourne en rond merde, On tourne en rond merde, On tourne en rond merde :?

Alors, j'ai fais ça en attendant, mais je vais garder ton code qui est trop classe..comme ça j'aurais des fleches fines et des grosses :wink:
A moins que y'ai une combine pour grossir celles de ton code ??? et que je sois passé a coté :roll:
Mais pour les grosses, j'ai pas fini, faut que j'arrive a pouvoir bouger les string sans bouger le container, j'sens que je vais m'amuser :?

Encore merci...grace à vous j'avance... 8)

Code : Tout sélectionner

 Enumeration
 #Fenetre
 #ImageGadgetFleche
 #Manche1
 #Manche2
 #ContainerFlecheDB
 #ImageFleche
 #BoutFleche
EndEnumeration

Hauteur = 200
Largeur = 400

UseJPEGImageDecoder()

OpenWindow(#Fenetre, 417, 181, 600, 500, "New window ( 0 )",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )

ContainerGadget(#ContainerFlecheDB, 67, 58, 481, 197) ; #PB_Container_Raised
 SetGadgetColor(#ContainerFlecheDB, #PB_Gadget_BackColor, RGB(255,255,255))
 StringGadget(#Manche1, 41, 26, 302, 22, "", #PB_String_BorderLess)
 StringGadget(#Manche2, 339, 26, 20, 123, "", #PB_String_BorderLess)
 SetGadgetColor(#Manche1, #PB_Gadget_BackColor, RGB(255,0,0))
 SetGadgetColor(#Manche2, #PB_Gadget_BackColor, RGB(255,0,0))
 ImageGadget(#ImageFleche, 310, 118, 55, 38, CatchImage(#BoutFleche, ?BoutFleche))
CloseGadgetList()

Repeat  
 
 Evenement = WaitWindowEvent()
 
 Select Evenement
  
  Case #WM_MOUSEMOVE
  
   MouseX = WindowMouseX(#Fenetre)
			MouseY = WindowMouseY(#Fenetre)
   
			If GetAsyncKeyState_(#VK_LBUTTON)
 
    ResizeGadget(#ContainerFlecheDB, mousex , mousey,#PB_Ignore,#PB_Ignore)

  	EndIf			
 
 EndSelect
 
Until Evenement = #PB_Event_CloseWindow

End

DataSection

 BoutFleche:
 Data.b -1,-40,-1,-32,0,16,74,70,73,70,0,1,1,1,0,72,0,72,0,0,-1,-37,0,67,0,8,6,6,7,6,5,8,7,7,7,9,9,8,10,12,20,13,12,11,11,12
 Data.b 25,18,19,15,20,29,26,31,30,29,26,28,28,32,36,46,39,32,34,44,35,28,28,40,55,41,44,48,49,52,52,52,31,39,57,61,56,50,60
 Data.b 46,51,52,50,-1,-37,0,67,1,9,9,9,12,11,12,24,13,13,24,50,33,28,33,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50
 Data.b 50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,-1,-64,0,17,8,0,49
 Data.b 0,78,3,1,34,0,2,17,1,3,17,1,-1,-60,0,31,0,0,1,5,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,2,3,4,5,6,7,8,9,10,11,-1,-60,0,-75,16
 Data.b 0,2,1,3,3,2,4,3,5,5,4,4,0,0,1,125,1,2,3,0,4,17,5,18,33,49,65,6,19,81,97,7,34,113,20,50,-127,-111,-95,8,35,66,-79,-63
 Data.b 21,82,-47,-16,36,51,98,114,-126,9,10,22,23,24,25,26,37,38,39,40,41,42,52,53,54,55,56,57,58,67,68,69,70,71,72,73,74,83
 Data.b 84,85,86,87,88,89,90,99,100,101,102,103,104,105,106,115,116,117,118,119,120,121,122,-125,-124,-123,-122,-121,-120,-119
 Data.b -118,-110,-109,-108,-107,-106,-105,-104,-103,-102,-94,-93,-92,-91,-90,-89,-88,-87,-86,-78,-77,-76,-75,-74,-73,-72,-71
 Data.b -70,-62,-61,-60,-59,-58,-57,-56,-55,-54,-46,-45,-44,-43,-42,-41,-40,-39,-38,-31,-30,-29,-28,-27,-26,-25,-24,-23,-22
 Data.b -15,-14,-13,-12,-11,-10,-9,-8,-7,-6,-1,-60,0,31,1,0,3,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,2,3,4,5,6,7,8,9,10,11,-1,-60,0
 Data.b -75,17,0,2,1,2,4,4,3,4,7,5,4,4,0,1,2,119,0,1,2,3,17,4,5,33,49,6,18,65,81,7,97,113,19,34,50,-127,8,20,66,-111,-95,-79
 Data.b -63,9,35,51,82,-16,21,98,114,-47,10,22,36,52,-31,37,-15,23,24,25,26,38,39,40,41,42,53,54,55,56,57,58,67,68,69,70,71
 Data.b 72,73,74,83,84,85,86,87,88,89,90,99,100,101,102,103,104,105,106,115,116,117,118,119,120,121,122,-126,-125,-124,-123
 Data.b -122,-121,-120,-119,-118,-110,-109,-108,-107,-106,-105,-104,-103,-102,-94,-93,-92,-91,-90,-89,-88,-87,-86,-78,-77,-76
 Data.b -75,-74,-73,-72,-71,-70,-62,-61,-60,-59,-58,-57,-56,-55,-54,-46,-45,-44,-43,-42,-41,-40,-39,-38,-30,-29,-28,-27,-26
 Data.b -25,-24,-23,-22,-14,-13,-12,-11,-10,-9,-8,-7,-6,-1,-38,0,12,3,1,0,2,17,3,17,0,63,0,-9,-6,40,-94,-128,10,40,-81,-100
 Data.b 62,48,-4,97,-2,-43,-5,71,-122,124,51,115,-1,0,18,-2,99,-67,-66,-115,-65,-29,-25,-42,52,63,-13,-49,-43,-65,-117,-96,-7
 Data.b 126,-8,6,-65,-114,-65,104,23,-45,53,-61,97,-31,56,44,111,109,-32,-54,-49,119,114,-84,-23,43,-6,71,-75,-105,-27,28,-4
 Data.b -36,-18,-19,-64,5,-86,120,63,-10,-128,-43,117,63,22,88,88,-8,-122,61,26,-57,75,-99,-39,38,-72,72,-92,82,-121,105,-39
 Data.b -55,114,0,-35,-76,18,70,0,36,-100,117,30,7,69,0,125,-1,0,69,124,-31,-16,123,-29,15,-10,87,-39,-4,51,-30,107,-97,-8,-105
 Data.b -15,29,-107,-12,-115,-1,0,30,-34,-111,-56,127,-25,-97,-93,127,15,67,-14,-3,-49,-93,-24,0,-94,-118,40,0,-94,-118,-7,-61
 Data.b -29,15,-58,31,-19,95,-76,120,103,-61,55,63,-15,47,-26,59,-37,-24,-37,-2,62,125,99,67,-1,0,60,-3,91,-8,-70,15,-105,-17
 Data.b -128,31,24,126,48,-1,0,106,-3,-93,-61,62,25,-71,-1,0,-119,127,49,-34,-33,70,-33,-15,-13,-21,26,31,-7,-25,-22,-33,-59
 Data.b -48,124,-65,127,-61,-24,-82,-13,-31,-97,-61,59,-17,31,-22,-123,-36,-55,109,-94,-37,-72,23,87,96,114,79,95,46,60,-16
 Data.b 92,-114,-3,20,28,-98,-96,48,1,-16,-49,-31,-99,-9,-113,-11,66,-18,100,-74,-47,109,-36,11,-85,-80,57,39,-81,-105,30,120
 Data.b 46,71,126,-118,14,79,80,26,63,-119,95,14,111,60,5,-82,52,113,-7,-9,58,68,-72,107,107,-58,-120,-128,55,110,-60,110,-40
 Data.b -37,-26,13,-89,-127,-44,96,-32,103,3,-21,-67,43,74,-79,-48,-12,-69,125,51,76,-74,-114,-38,-50,-35,54,69,18,116,81,-4
 Data.b -55,39,36,-109,-55,36,-109,-110,106,61,103,67,-46,-4,67,-89,61,-122,-81,97,5,-19,-85,100,-20,-103,51,-76,-112,70,-27
 Data.b 61,85,-80,78,24,96,-116,-16,104,3,-31,10,-9,-113,-126,-33,22,82,-58,36,-16,-57,-119,111,-74,-37,-82,5,-123,-36,-20,-86
 Data.b -112,32,86,37,36,-111,-104,97,120,80,-100,30,-72,-50,54,-127,-26,127,16,60,7,125,-32,31,16,127,103,-36,52,-105,22,-110
 Data.b 32,123,91,-45,22,-59,-100,96,110,-64,-53,96,-85,28,17,-100,-12,61,24,87,39,64,31,127,-47,94,15,-16,111,-30,-11,-58,-91
 Data.b 121,23,-122,124,77,119,-26,-36,73,-111,103,127,60,-128,23,32,34,-92,36,5,-27,-114,28,-17,102,-53,19,-114,73,21,-17,20
 Data.b 1,-27,127,-76,6,-85,125,-90,124,57,68,-79,-71,-110,1,123,122,-106,-73,27,56,47,17,-114,70,41,-98,-96,18,-93,56,-22,50
 Data.b 15,4,-125,-14,-91,125,-97,-15,31,-64,-65,-16,-80,60,61,111,-92,-1,0,104,-3,-125,-55,-69,91,-97,55,-56,-13,115,-124,117
 Data.b -37,-115,-53,-3,-4,-25,61,-85,-52,-32,-3,-103,-95,91,-120,-102,-29,-59,114,73,0,112,100,72,-20,2,51,46,121,1,-116,-124
 Data.b 3,-114,-8,56,-12,52,1,-25,31,12,-2,25,-33,120,-1,0,84,46,-26,75,109,22,-35,-64,-70,-69,3,-110,122,-7,113,-25,-126,-28
 Data.b 119,-24,-96,-28,-11,1,-66,-73,-46,-76,-85,29,15,75,-73,-45,52,-53,104,-19,-84,-19,-45,100,81,39,69,31,-52,-110,114,73
 Data.b 60,-110,73,57,38,-115,43,74,-79,-48,-12,-69,125,51,76,-74,-114,-38,-50,-35,54,69,18,116,81,-4,-55,39,36,-109,-55,36
 Data.b -109,-110,106,-27,0,20,81,69,0,99,-8,-97,-61,26,95,-117,-76,57,-76,-115,94,15,54,-34,78,85,-105,-121,-119,-57,71,67
 Data.b -39,-122,79,-26,65,4,18,15,-56,30,58,-16,46,-87,-32,61,112,-40,95,-113,54,-34,76,-75,-83,-38,46,18,-31,7,113,-24,-61
 Data.b 35,43,-37,61,-63,4,-3,-81,88,-2,39,-16,-58,-105,-30,-19,14,109,35,87,-125,-51,-73,-109,-107,101,-31,-30,113,-47,-48
 Data.b -10,97,-109,-7,-112,65,4,-126,1,-16,-59,125,103,-16,47,-60,58,-105,-120,126,31,59,-22,-105,50,92,-49,105,123,45,-70
 Data.b -49,43,-77,-55,34,-31,100,-53,-77,18,73,6,66,7,-80,3,-75,121,-124,-1,0,-77,127,-118,-106,-30,85,-73,-43,116,105,32,14
 Data.b 68,111,36,-110,-93,50,-25,-126,84,33,0,-29,-74,78,61,77,122,-1,0,-62,111,5,106,94,3,-16,-83,-42,-105,-86,79,105,52,-14
 Data.b -34,-67,-62,-75,-85,-77,40,82,-120,-72,59,-107,78,114,-121,-73,-91,0,119,-108,81,69,0,20,81,69,0,20,81,69,0,20,81,69
 Data.b 0,20,81,69,0,127,-1,-39

EndDataSection

Re: Relier graphiquement deux Gadgets

Publié : lun. 04/janv./2010 17:10
par Kwai chang caine
Yaaaoouuuaaooohh !!!!

Grace à KERNADEC et RASHAD.....j'ai exactement ce que je voulais :D
RASHAD m'a donné la combine de faire une boucle de X lignes pour epaissir, il appelle ça "CROSS PLATFORM" 8O (Rien compris,mais ça marche, meme quand je comprend pas :mrgreen:)
J'aurais jamais cru PB assez rapide pour ecrire les X lignes et les resizer sans "flickering"
Et bah si....pardon FRED :oops:

Image

Les vilain cowboys y peuvent venir.....grace à ma nouvelle fleche, j'vais les plumer comme des poulets
Merci à tous de votre aide...qu'est ce que je pourrais faire sans vous :oops:

Code : Tout sélectionner

Enumeration
 #Fenetre
 #Image_0
 #Image_1
 #FondBlanc
 #ImageGadget
EndEnumeration

Hauteur = 200
Largeur = 400
CreateImage(#Image_0, Largeur,Hauteur) ; Image de ce qui est fixe
CreateImage(#Image_1, Largeur,Hauteur) ; image de ce qui est en cours dêtre dessiné

Procedure DessineFleche(x, y, Largeur)
 
 StartDrawing(ImageOutput(#Image_1))
  
  DrawImage(ImageID(#Image_0), 0, 0)
  
  For i = 1 To Largeur
   LineXY(0, 10 + i, x - 40, 10 + i, RGB(226, 23, 29)) ; Horizontale
   LineXY(x - 40 + i, 11, x - 40 + i, y - 30, RGB(226, 23, 29)) ; Verticale
   LineXY(x - 40 + i, y - 30, x - 60 + i, y - 60, RGB(226, 23, 29)) ; Bord fleche gauche
   LineXY(x - 40 + i, y - 30, x - 20 + i, y - 60, RGB(226, 23, 29)) ; Bord fleche droit
  Next 
  
 StopDrawing()
 
 SetGadgetState(#ImageGadget,ImageID(#Image_1))
 RedrawWindow_(WindowID(#Fenetre), 0, 0, #RDW_INVALIDATE|#RDW_UPDATENOW)
 
EndProcedure

OpenWindow(#Fenetre, 417, 181, 600, 500, "Fleche et souris", #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_TitleBar)
ImageGadget(#ImageGadget, 100, 100, Largeur,Hauteur, ImageID(#Image_1))

StartDrawing(ImageOutput(#Image_0))
 FillArea(0, 0, RGB(255,255,255), RGB(255,255,255))
StopDrawing()

DessineFleche(Largeur, Hauteur, 10)
      
Repeat  

Evenement = WaitWindowEvent()

  Select Evenement
   
   Case #WM_MOUSEMOVE
   
      MouseX = WindowMouseX(#Fenetre)
      MouseY = WindowMouseY(#Fenetre)
      
      If GetAsyncKeyState_(#VK_LBUTTON)
       DessineFleche(mousex - GadgetX(#ImageGadget), mousey - GadgetY(#ImageGadget), 15)
      EndIf         

   EndSelect

Until Evenement = #PB_Event_CloseWindow



Re: Relier graphiquement deux Gadgets

Publié : lun. 04/janv./2010 17:12
par kernadec
voila avec l'option API les épaisseurs, il te faudra revoir ton embout de flèche pour que cela soit top

je viens de voir le code précèdent , eh bien comme ca tu as les deux style avec et sans API

Cordialement

Code : Tout sélectionner

Enumeration
#Fenetre
#Image_0
#Image_1
#FondBlanc
#ImageGadget
EndEnumeration
Global dc.l,epais.l
Hauteur = 200
Largeur = 400
epais.l=12
CreateImage(#Image_0, Largeur,Hauteur) 
CreateImage(#Image_1, Largeur,Hauteur)
Procedure Ligne(x,y,x1,y1,Width,color) 
 pen=CreatePen_(#PS_SOLID,Width,color) 
 penOld=SelectObject_(DC,pen) 
 MoveToEx_(DC,x,y,0):LineTo_(DC,x1,y1) 
 DeleteObject_(pen) 
 DeleteObject_(penOld) 
EndProcedure  
Procedure DessineFleche(x, y)
dc=StartDrawing(ImageOutput(#Image_1))
   DrawImage(ImageID(#Image_0), 0, 0)
    Ligne(0, 10, x - 10, 10,epais,RGB(226, 23, 29)) ; Horizontale
    Ligne(x - 10, 10, x - 10, y - 10,epais,RGB(226, 23, 29)) ; Verticale
    Ligne(x - 10, y - 10+epais, x - 15-epais, y - 20,epais,RGB(226, 23, 29))
    Ligne(x - 10, y - 10+epais, x - 5+epais, y - 20,epais,RGB(226, 23, 29))
   StopDrawing()
SetGadgetState(#ImageGadget,ImageID(#Image_1))
RedrawWindow_(WindowID(#Fenetre), 0, 0, #RDW_INVALIDATE|#RDW_UPDATENOW)
EndProcedure

OpenWindow(#Fenetre, 417, 181, 600, 500, "New window ( 0 )",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
ImageGadget(#ImageGadget, 100, 100, Largeur,Hauteur, ImageID(#Image_1))
StartDrawing(ImageOutput(#Image_0))
FillArea(0,0,RGB(255,255,255),RGB(255,255,255))
StopDrawing()
DessineFleche(Largeur, Hauteur)

Repeat  
 Evenement = WaitWindowEvent()
  Select Evenement
   Case #WM_MOUSEMOVE
    MouseX = WindowMouseX(#Fenetre)
    MouseY = WindowMouseY(#Fenetre)
     If GetAsyncKeyState_(#VK_LBUTTON)
       DessineFleche(mousex - GadgetX(#ImageGadget), mousey - GadgetY(#ImageGadget))
     EndIf         
   EndSelect
Until Evenement = #PB_Event_CloseWindow

Re: Relier graphiquement deux Gadgets

Publié : lun. 04/janv./2010 17:16
par Kwai chang caine
T'es vraiment un ange KERNADEC
Alors la, c'est plus une fleche..mais tout le foureau que j'ai grace à toi 8)
J'sais pas si t'as vu, on a posté ensemble, ton code et celui de RASHAD mixé, j'ai fait la soupe, c'est pas mal non plus...et en natif 8)

Re: Relier graphiquement deux Gadgets

Publié : lun. 04/janv./2010 17:28
par Kwai chang caine
Merci mille fois... 8)
Grace à toi et les copains du forum, KCC y continue sont LOGIGRAMME, jusqu'a la prochaine buche :oops:

Heureusement que y'en a qui sont serieux sur ce forum, et qui utilisent pas leurs neurones encore tout brulés par le soleil à dire des conneries 8)
"Nc'pas" DOBRO :? :lol: :lol:

Re: Relier graphiquement deux Gadgets

Publié : lun. 04/janv./2010 18:32
par kernadec
bsr kcc
je viens de modifier le dernier code afin que la flèche soit proportionnelle à l'épaisseur.
c'est plus joli

Cordialement

Re: Relier graphiquement deux Gadgets

Publié : lun. 04/janv./2010 18:50
par Kwai chang caine
C'est vrai que cette fois elle a de la gueule, merci je le met de coté pour ma prochaine idée 8)
J'ai choisi le plus simple...car deja que j'ai du mal a m'en sortir depuis un an :oops:
J'avais trouvé un code de SROD qui utilisait les API, mais evidemment il marchait pas sous 4.40 ...RASHAD me l'a décoincé, et c'est la qu'il m'a donné la seconde solution que j'ai ajouté a ton code :D
Y'a toujours un truc qui colle pas, entre les OS, les versions et tout ce qui s'en suit...

C'est dingue, PB on dirait une couverture trop petite....
Tu tire a gauche tu te pele le bras droit, tu la tire a droite le bras gauche...
Et si tu veux pas prendre froid a la gorge....et ben t'a les germes de soja congelés, comme "Le Lrené" de céline dion :?

Je viens d'inclure ton premier code, et c'est trop de la balle ça marche :D
J'suis super content, tout le WE, ça m'a travaillé, mais ma femme elle a pas voulu que je code ce WE, elle a voulu qu'on pose de la laine de verre :?
Alors en meme temps que je me perforais les poumons, je me demandais comment faire cette satané fleche :twisted:

Bon, une fois mon probleme d'image tordue résolu, (J'ai posé ma question sur le US, si "quinquin" a une idée :roll:), je crois que je vais pouvoir commencer a faire des dessins et faire le tri dans ma tete.

J'espere que j'ai rien oublié comme element : les losanges...les fleches, les textes, je verrais au fur et a mesure, car il est deja bien compliqué juste pour faire ça. 8O

Encore merci de ta precieuse aide 8)