Bon alors j'ai un soucis, à partir de la ligne 151.
Je fais une expérience, des essais, d’où ce code.
Je vous expliquerais au fur et à mesure ou je veux en venir
Je voudrait créer des lignes en cercle qui parte du point jusqu'au extrémité du cercle (Sans le toucher)
et de Longueur aléatoire mais aussi avec un angle aléatoire.
Genre ça mais tous remplie:
Code (Beaucoup de code pour la fenêtre mais j'ai besoin):
Code : Tout sélectionner
; Code créer par Monsieur Dieppedalle David le 24/07/2016.
;{ Enumeration
; Window
Enumeration Window
#WindowMain
EndEnumeration
; Gadget
Enumeration Gadget
EndEnumeration
;}
;{ Constantes
;{ Evenements Fenêtre
#PB_WindowsEvent_MouseEnterOrLeave = 674 ; Le curseur de la souris est entré ou sortie dans de la fenêtre.
#PB_WindowsEvent_MouseMove = 512 ; Le curseur de la souris a bougé sur la fenêtre.
#PB_WindowsEvent_BorderMouseMove = 160 ; Le curseur de la souris a bougé sur la zone cliente (Bordure) de la fenêtre.
#PB_WindowsEvent_MouseWheel = 522 ; La molette de la souris a bougé sur la fenêtre.
#PB_WindowsEvent_LeftButtonDown = 513 ; Le bouton gauche de la souris a été pressé sur la fenêtre.
#PB_WindowsEvent_LeftButtonUp = 514 ; Le bouton gauche de la souris a été relâché sur la fenêtre.
#PB_WindowsEvent_LeftClick = 13112 ; Un clic avec le bouton gauche de la souris sur la fenêtre.
#PB_WindowsEvent_LeftDoubleClick = 13113 ; Un double-clic avec le bouton gauche de la souris sur la fenêtre.
#PB_WindowsEvent_RightButtonDown = 516 ; Le bouton droit de la souris a été pressé sur la fenêtre.
#PB_WindowsEvent_RightButtonUp = 517 ; Le bouton droit de la souris a été relâché sur la fenêtre.
#PB_WindowsEvent_MiddleButtonDown = 519 ; Le bouton central de la souris a été pressé sur la fenêtre.
#PB_WindowsEvent_MiddleButtonUp = 520 ; Le bouton central de la souris a été relâché sur la fenêtre.
#PB_WindowsEvent_KeyDown = 556 ; Une touche clavier a été pressée.
#PB_WindowsEvent_KeyUp = 558 ; Une touche clavier a été relâchée.
#PB_WindowsEvent_Focus = 13104 ; La fenêtre a obtenu le focus.
#PB_WindowsEvent_LostFocus = 13014 ; La fenêtre a perdus le focus.
#PB_WindowsEvent_MoveWindow = 13117 ; La fenêtre a été déplacée.
#PB_WindowsEvent_SizeWindow = 13118 ; La fenêtre a été redimentionné.
#PB_WindowsEvent_MinimizeWindow = 13107 ; La fenêtre a été maximisée.
#PB_WindowsEvent_MaximizeWindow = 13108 ; La fenêtre a été minimisée.
#PB_WindowsEvent_RestoreWindow = 13109 ; La fenêtre a été restaurée à sa taille normale.
#PB_WindowsEvent_WindowDrop = 13105 ; Une opération Glisser & Déposer s'est terminée sur une fenêtre.
#PB_WindowsEvent_GadgetDrop = 13016 ; Une opération Glisser & Déposer s'est terminée sur un gadget.
#PB_WindowsEvent_Repaint = 13115 ; Tout ou partie du contenu de la fenêtre a été détruit et doit être reconstitué (Utile pour les applications graphiques 2D).
#PB_WindowsEvent_SysTray = 13102 ; Une icône dans la zone SysTray a été cliquée.
#PB_WindowsEvent_Timer = 13110 ; Le temps d'un minuteur s'est écoulé
#PB_WindowsEvent_CloseWindow = 13116 ; L'icône de fermeture de fenêtre a été cliquée.
;}
;}
;{ Procedures
; Change la transparence de la fenêtre.
Procedure SetWindowsTransparency(WindowNomber, level)
If level>=0 And level<101
hLib = LoadLibrary_("user32.dll")
If hLib
adr = GetProcAddress_(hLib,"SetLayeredWindowAttributes")
If adr
SetWindowLong_(WindowID(WindowNomber),#GWL_EXSTYLE,GetWindowLong_(WindowID(WindowNomber),#GWL_EXSTYLE)|$00080000) ; #WS_EX_LAYERED = $00080000
CallFunctionFast(adr,WindowID(WindowNomber),0,255*level/100,2)
EndIf
FreeLibrary_(hLib)
EndIf
EndIf
EndProcedure
;}
;{ Ouverture du fichier de Preferences de la fenêtre et réglage des paramètres par defauts.
OpenPreferences("Preferences.txt")
PreferenceGroup("Window Main")
WindowX.i = ReadPreferenceInteger("X", 0)
WindowY.i = ReadPreferenceInteger("Y", 0)
WindowWidth.i = ReadPreferenceInteger("Width", 800)
WindowHeight.i = ReadPreferenceInteger("Height", 600)
WindowTitle.s = ReadPreferenceString("Title", "Window Main")
WindowColor.i = ReadPreferenceInteger("Color", RGB(240, 240, 240))
WindowFlags.i = ReadPreferenceInteger("Flags", 0)
WindowTransparency.i = ReadPreferenceInteger("Transparency", 100)
WindowSmartRefresh.i = ReadPreferenceInteger("SmartRefresh", #True)
WindowSticky.i = ReadPreferenceInteger("Sticky", #False)
ClosePreferences()
;}
Select WindowFlags
Case 0
WindowFlags = #PB_Window_Normal
Case 1
WindowFlags = #PB_Window_Maximize
Default
WindowFlags = #PB_Window_Normal
EndSelect
WindowFlags = #PB_Window_SystemMenu | #PB_Window_TitleBar | WindowFlags | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget
; Si la fenêtre peut être ouverte.
If OpenWindow(#WindowMain, WindowX, WindowY, WindowWidth, WindowHeight, "Titre", WindowFlags)
SetWindowsTransparency(#WindowMain, WindowTransparency) ; Change la transparence de la fenêtre.
SetWindowColor(#WindowMain, WindowColor) ; Change la couleur de font de la fenêtre.
If WindowSmartRefresh = #True
; Si la fenêtre n'est pas redimensionnable, cette commande n'est pas utile.
; Il n'est pas garanti que cette méthode fonctionne dans tous les cas de figure, et le mieux est de l'activer, faire des tests pour voir si elle a vraiment un effet.
SmartWindowRefresh(#WindowMain, #True) ; Active la méthode de rafraîchissement de l'affichage de la fenêtres visant à réduire les scintillements lors d'un redimensionnement (Pas toujours utile).
EndIf
If WindowSticky = #True
StickyWindow(#WindowMain, #True) ; Affiche la fenêtre toujours au premier plan, devant tous les autres programmes, même si elle n'est pas active.
EndIf
; Taille de l'image pour déssiner la Map.
LargeurImage.i = 2000
HauteurImage.i = 2000
; Création d'une image vide.
NumeroImage.i = CreateImage(#PB_Any, LargeurImage.i, HauteurImage.i, 32, RGB(255, 255, 255))
LargeurMap.i = 350
HauteurMap.i = 250
; Si l'image a été créer.
If IsImage(NumeroImage.i)
; Création d'un cercle de la taille voulue (Taille Map).
If StartDrawing(ImageOutput(NumeroImage.i))
DrawingMode(#PB_2DDrawing_Outlined)
Ellipse(WindowWidth / 2, WindowHeight / 2, LargeurMap.i, HauteurMap.i, RGB(0, 0, 0))
; Dessiner un gros point au centre du cercle.
DrawingMode(#PB_2DDrawing_Default)
Ellipse(WindowWidth / 2, WindowHeight / 2, 10, 10, RGB(0, 0, 0))
; Maintenant déssine des lignes partant du point vers l'extremiter du cercle de longueur aléatoire entre une intervale
; et aussi d'un angle aléatoire entre une intervale.
For Angle = 0 To 360
Line(WindowWidth / 2, WindowHeight / 2, (WindowWidth / 2) + 100, (WindowHeight / 2) + (Angle * 90), RGB(0, 0, 0))
Angle + Random(10, 5)
Next Angle
EndIf
EndIf
; Affichage de l'image sur la fenêtre.
ImageGadget(#PB_Any, 0, 0, LargeurImage.i, HauteurImage.i, ImageID(NumeroImage.i))
;{ Evenements
Repeat ; Départ des événements de boucle.
Event = WaitWindowEvent() ; Cette ligne attend pendent (Minuteur) qu'un évènement soit recus par la fenêtre.
EventWindow = EventWindow() ; La fenêtre ou l'évènement c'est produit.
EventGadget = EventGadget() ; Pour savoir sur quel gadget c'est produis l'évènement.
EventMenu = EventMenu() ; Pour savoir sur quel menu c'est produis l'évènement.
EventType = EventType() ; Le type d'évènement qui c'est produis sur le gadget.
Select Event
Case #PB_Event_Gadget ; Un évènement est intervenue sur un gadget.
Select EventGadget ; Le numéro du gadget ou est intervenue l'évènement.
Case 0
EndSelect
Case #PB_Event_Menu ; Un évènement est intervenue sur un gadget.
Select EventMenu ; Le numéro du menu ou est intervenue l'évènement.
Case 0
EndSelect
Case #PB_WindowsEvent_MouseEnterOrLeave ; Le curseur de la souris est entré ou sortie de la fenêtre.
Case #PB_WindowsEvent_MouseMove ; Le curseur de la souris a bougé sur la fenêtre.
Case #PB_WindowsEvent_BorderMouseMove ; Le curseur de la souris a bougé sur la zone cliente (Bordure) de la fenêtre.
Case #PB_WindowsEvent_MouseWheel ; La molette de la souris a bougé sur la fenêtre.
Case #PB_WindowsEvent_LeftButtonDown ; Le bouton gauche de la souris a été pressé sur la fenêtre.
Case #PB_WindowsEvent_LeftButtonUp ; Le bouton gauche de la souris a été relâché sur la fenêtre.
Case #PB_WindowsEvent_LeftClick ; Un clic avec le bouton gauche de la souris sur la fenêtre.
Case #PB_WindowsEvent_LeftDoubleClick ; Un double-clic avec le bouton gauche de la souris sur la fenêtre.
Case #PB_WindowsEvent_RightButtonDown ; Le bouton droit de la souris a été pressé sur la fenêtre.
Case #PB_WindowsEvent_RightButtonUp ; Le bouton droit de la souris a été relâché sur la fenêtre.
Case #PB_WindowsEvent_MiddleButtonDown ; Le bouton central de la souris a été pressé sur la fenêtre.
Case #PB_WindowsEvent_MiddleButtonUp ; Le bouton central de la souris a été relâché sur la fenêtre.
Case #PB_WindowsEvent_KeyDown ; Une touche clavier a été pressée.
Case #PB_WindowsEvent_KeyUp ; Une touche clavier a été relâchée.
Case #PB_WindowsEvent_Focus ; La fenêtre a été activée (Gain du focus).
Case #PB_WindowsEvent_LostFocus ; La fenêtre a été désactivée (Perte du focus).
Case #PB_WindowsEvent_RestoreWindow ; La fenêtre a été restaurée à sa taille normale.
Case #PB_WindowsEvent_MinimizeWindow ; La fenêtre a été minimisée.
Case #PB_WindowsEvent_MaximizeWindow ; La fenêtre a été maximisée.
Case #PB_WindowsEvent_WindowDrop ; Une opération Glisser & Déposer s'est terminée sur une fenêtre.
Case #PB_WindowsEvent_GadgetDrop ; Une opération Glisser & Déposer s'est terminée sur un gadget.
Case #PB_WindowsEvent_Repaint ; Tout ou partie du contenu de la fenêtre a été détruit et doit être reconstitué (Utile pour les applications graphiques 2D).
Case #PB_WindowsEvent_SysTray ; Une icône dans la zone SysTray a été cliquée.
Case #PB_WindowsEvent_Timer ; Le temps d'un minuteur s'est écoulé.
Case #PB_WindowsEvent_MoveWindow ; La fenêtre a été déplacée.
If GetWindowState(#WindowMain) = #PB_Window_Normal
WindowX = WindowX(#WindowMain)
WindowY = WindowY(#WindowMain)
WindowFlags = 0
ElseIf GetWindowState(#WindowMain) = #PB_Window_Maximize
WindowFlags = 1
EndIf
Case #PB_WindowsEvent_SizeWindow ; La fenêtre a été redimentionné.
If GetWindowState(#WindowMain) = #PB_Window_Normal
WindowWidth = WindowWidth(#WindowMain)
WindowHeight = WindowHeight(#WindowMain)
WindowFlags = 0
ElseIf GetWindowState(#WindowMain) = #PB_Window_Maximize
WindowFlags = 1
EndIf
Case #PB_WindowsEvent_CloseWindow ; L'icône de fermeture de fenêtre a été cliquée.
EndSelect
Until Event = #PB_Event_CloseWindow ; Fin des évènements de boucle.
EndIf
;{ Enregistrement des paramètres de la fenêtre.
WindowFlags = GetWindowState(#WindowMain)
If WindowFlags = 16777216 ; Maximisé.
WindowFlags = 1
ElseIf WindowFlags = 536870912 ; Minimisé.
WindowFlags = 0
EndIf
OpenPreferences("Preferences.txt")
PreferenceGroup("Window Main")
WritePreferenceInteger("X", WindowX)
WritePreferenceInteger("Y", WindowY)
WritePreferenceInteger("Width", WindowWidth)
WritePreferenceInteger("Height", WindowHeight)
WritePreferenceString("Title", WindowTitle)
WritePreferenceInteger("Color", WindowColor)
WritePreferenceInteger("Flags", WindowFlags)
WritePreferenceInteger("Transparency", WindowTransparency)
WritePreferenceInteger("SmartRefresh", WindowSmartRefresh)
WritePreferenceInteger("Sticky", WindowSticky)
ClosePreferences()
;}