ATTENTION FRED NOUS SURVEILLE !!!
ATTENTION FRED NOUS SURVEILLE !!!
..............
Dernière modification par Backup le mer. 28/sept./2011 9:59, modifié 8 fois.
-
- Messages : 4312
- Inscription : mer. 28/janv./2004 20:58
- Localisation : Clermont ferrand OU Olsztyn
- Contact :


Dernière modification par Le Soldat Inconnu le dim. 13/juin/2004 15:15, modifié 1 fois.
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?
[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
J'ajouterai bien ça entre le ClearScreen et le Until à la fin :
Code : Tout sélectionner
If yyd = 50 And yyg = 50 And xyd = 110 And xyg = 50
hDesktop = GetDesktopWindow_()
hDC = GetWindowDC_(hDesktop)
rect.RECT
rect\right = GetSystemMetrics_(#SM_CXSCREEN)
rect\bottom = GetSystemMetrics_(#SM_CYSCREEN)
oldFont = SelectObject_(hDC, LoadFont(23, "Verdana", 128))
SetBkMode_(hDC, #TRANSPARENT)
SetTextColor_(hDC, #Red)
DrawText_(hDC, "Arf !", Len("Arf !"), @rect, #DT_CENTER | #DT_VCENTER | #DT_SINGLELINE)
SelectObject_(hDC, oldFont)
ReleaseDC_(hDesktop, hDC)
EndIf
Mon avatar reproduit l'image de 4x1.8m présentée au 'Salon international du meuble de Paris' en janvier 2004, dans l'exposition 'Shades' réunisant 22 créateurs autour de Matt Sindall. L'original est un stratifié en 150 dpi.
oui j'ai changer mon prog depuis : il est plus petit maintenant
pour que ça marche il faudrai faire
mais l'ecran ne se renettoie pas tout seul !!!
c'est embetant !
pour que ça marche il faudrai faire
Code : Tout sélectionner
If yyd = 25 And yyg = 25 And xyd = 55 And xyg = 25
hDesktop = GetDesktopWindow_()
hDC = GetWindowDC_(hDesktop)
rect.RECT
rect\right = GetSystemMetrics_(#SM_CXSCREEN)
rect\bottom = GetSystemMetrics_(#SM_CYSCREEN)
oldFont = SelectObject_(hDC, LoadFont(23, "arial", 128))
SetBkMode_(hDC, #TRANSPARENT)
SetTextColor_(hDC, #Red)
DrawText_(hDC, "Arf !", Len("Arf !"), @rect, #DT_CENTER | #DT_VCENTER | #DT_SINGLELINE)
SelectObject_(hDC, oldFont)
ReleaseDC_(hDesktop, hDC)
EndIf
mais l'ecran ne se renettoie pas tout seul !!!
c'est embetant !

-
- Messages : 4312
- Inscription : mer. 28/janv./2004 20:58
- Localisation : Clermont ferrand OU Olsztyn
- Contact :
avec un masque pour enlever le coutour des yeux, c'est cela que tu cherches
j'ai pas essayé ton bout de code au dessus mais comme il y a de la transparence, je pense que c'est cela
regarde ceci : (extrait de codes-fr également)

regarde ceci : (extrait de codes-fr également)
Code : Tout sélectionner
; Auteur : Le Soldat Inconnu
; Version de PB : 3.90
;
; Explication du programme :
; Donner à une fenêtre une forme spécifique. Par exemple faire une fenêtre ronde ou triangulaire.
Enumeration
#Quitter
#Forme1
#Forme2
#Forme3
#Forme4
#Forme5
EndEnumeration
Procedure Forme()
If GetGadgetState(#Forme1) ; si on a choisi la forme 1
Region = CreateRoundRectRgn_(0, 0, WindowWidth(), WindowHeight(), 40, 60) ; Création de la région pour faire une fenêtre avec les angles arrondis
; CreateRoundRectRgn_(X1, Y1, X2, Y2, R1, R2)
; X1, Y1 : coordonné du point haut gauche de la region
; X1, Y1 : coordonné du point haut gauche de la region
; R1, R2 : rayon de l'ellipse qui va servir à arrondir les angles de la region
SetWindowRgn_(WindowID(), Region, #True) ; On applique la région
DeleteObject_(Region) ; On supprime la région
ElseIf GetGadgetState(#Forme2) ; si on a choisi la forme 2
Region = CreateEllipticRgn_(0, 0, WindowWidth(), WindowHeight()) ; Création de la région pour faire une fenêtre elliptique
; CreateEllipticRgn_(X1, Y1, X2, Y2)
; X1, Y1 : coordonné du point haut gauche de la region
; X1, Y1 : coordonné du point haut gauche de la region
SetWindowRgn_(WindowID(), Region, #True) ; On applique la région
DeleteObject_(Region) ; On supprime la région
ElseIf GetGadgetState(#Forme3) ; si on a choisi la forme 3
Region = CreatePolygonRgn_(?Triangle, 4, #Alternate) ; Création de la région pour faire une fenêtre elliptique
; CreateRoundRectRgn_(Array, NbPoints, Type)
; Array : Adresse de la liste ou de la Data
; NbPoints : Nombre de points du polygone + 1 (car on fait une boucle donc on a 2 fois le premier point)
; Type : Voir msdn
SetWindowRgn_(WindowID(), Region, #True) ; On applique la région
DeleteObject_(Region) ; On supprime la région
ElseIf GetGadgetState(#Forme4) ; si on a choisi la forme 4
Region1 = CreateRectRgn_(0, 0, WindowWidth(), WindowHeight()) ; Création d'une région en rectangle
Region2 = CreateRectRgn_(10, 10, WindowWidth() - 10, 50) ; Création d'une région en rectangle
; CreateRectRgn_(X1, Y1, X2, Y2)
; X1, Y1 : coordonné du point haut gauche de la region
; X1, Y1 : coordonné du point haut gauche de la region
CombineRgn_(Region1, Region1, Region2, #RGN_DIFF) ; On combine les 2 régions
; Les modes suivants sont disponibles :
; #RGN_AND : Intersection
; #RGN_OR : Union
; #RGN_DIFF : Différences
; #RGN_XOR : Union moins les intersections
SetWindowRgn_(WindowID(), Region1, #True) ; On applique la région finale
DeleteObject_(Region1) ; On supprime les régions
DeleteObject_(Region2)
ElseIf GetGadgetState(#Forme5) ; si on a choisi la forme 5
Region1 = CreatePolygonRgn_(?Triangle, 4, #Alternate)
Region2 = CreateEllipticRgn_(0, 0, WindowWidth(), WindowHeight())
CombineRgn_(Region1, Region1, Region2, #RGN_OR) ; On combine les 2 régions
SetWindowRgn_(WindowID(), Region1, #True) ; On applique la région finale
DeleteObject_(Region1) ; On supprime les régions
DeleteObject_(Region2)
EndIf
EndProcedure
; Création de la fenêtre et dela GadgetList
If OpenWindow(0, 0, 0, 400, 400, #PB_Window_Borderless | #PB_Window_ScreenCentered, "Test") = 0 Or CreateGadgetList(WindowID(0)) = 0
End
EndIf
; Création des boutons et de l'option d'affichage
ButtonGadget(#Quitter, 100, 100, 200, 20, "Quitter")
OptionGadget(#Forme1, 100, 125, 200, 15, "Angles arrondis")
OptionGadget(#Forme2, 100, 140, 200, 15, "Ronde")
OptionGadget(#Forme3, 100, 155, 200, 15, "Triangle")
OptionGadget(#Forme4, 100, 170, 200, 15, "Trouée")
OptionGadget(#Forme5, 100, 185, 200, 15, "Triangle + Rond")
Repeat
Event = WaitWindowEvent()
If Event = #PB_EventGadget
Select EventGadgetID() ; boutons, zone de texte, ...
Case #Quitter
Event = #PB_EventCloseWindow ; On quitte
Default
Forme() ; sinon, on change la forme de la fenêtre
EndSelect
EndIf
Until Event = #PB_EventCloseWindow
End
DataSection
Triangle :
Data.l 200, 400, 0, 0, 400, 0, 200, 400 ; Coordonnées des points du triangle en x, y (il faut faire une boucle donc on revient au premier point du triangle
EndDataSection
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?
[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
@ Le soldat :
Non non je repondais a Fweil qui avait idéee de rajouter ce petit code
a la fin du mien !!
alors j'ai reposté son code legerement modifie pour qu'il s'adapte a "fred"
que j'avais entre temp modifier pour le reduire en taille ..
voila , mis j'ai recupere ton listing pour ma logiteque perso
car je le trouve tres cool Merci ..
Non non je repondais a Fweil qui avait idéee de rajouter ce petit code
a la fin du mien !!
alors j'ai reposté son code legerement modifie pour qu'il s'adapte a "fred"
que j'avais entre temp modifier pour le reduire en taille ..
voila , mis j'ai recupere ton listing pour ma logiteque perso
car je le trouve tres cool Merci ..

-
- Messages : 4312
- Inscription : mer. 28/janv./2004 20:58
- Localisation : Clermont ferrand OU Olsztyn
- Contact :
Salut,
bon, moi j'ai fait avec l'astuce que je t'ai donné plus haut. me suis bien marrer.
les yeux se déplacent sur l'écran, ils regardent la souris et essayent de l'éviter quand ils se déplacent.
voilà quoi que ça donne
bon, moi j'ai fait avec l'astuce que je t'ai donné plus haut. me suis bien marrer.
les yeux se déplacent sur l'écran, ils regardent la souris et essayent de l'éviter quand ils se déplacent.
voilà quoi que ça donne

Code : Tout sélectionner
#TailleOeil = 12
#TaillePupille = 4
#EspaceOeilPupille = 4
#EspaceEntreYeux = 0
#CentreOeilG = #TailleOeil + #TaillePupille - #EspaceOeilPupille
#CentreOeilD = (#TailleOeil + #TaillePupille - #EspaceOeilPupille) * 3 + #EspaceEntreYeux
#RayonOeil = #TailleOeil - #EspaceOeilPupille
#Cadre = 100
#DistanceMinSouris = 150
#Vitesse = 10
#Avance = 1
Global TailleEcranX.l, TailleEcranY.l, PosX.f, PosY.f, CibleX, CibleY, PosXSave.f, PosYSave.f
TailleEcranX = GetSystemMetrics_(#SM_CXSCREEN)
TailleEcranY = GetSystemMetrics_(#SM_CYSCREEN)
Procedure Yeux()
; Position de la souris
GetCursorPos_(CursorPos.POINT)
MouseX = CursorPos\x
MouseY = CursorPos\y
; Position du centre de l'oeil gauche
Dx.f = MouseX - WindowX() - #CentreOeilG
Dy.f = MouseY - WindowY() - #CentreOeilG
DistanceSouris1.f = Sqr(Pow(Dx, 2) + Pow(Dy, 2))
Dx = Dx / DistanceSouris1
Dy = Dy / DistanceSouris1
Distance.f = DistanceSouris1 / TailleEcranY * 4
If Distance > 1 : Distance = 1 : EndIf
OeilGX = Dx * Distance * #RayonOeil + #CentreOeilG
OeilGY = Dy * Distance * #RayonOeil + #CentreOeilG
; Position du centre de l'oeil droit
Dx.f = MouseX - WindowX() - #CentreOeilD
Dy.f = MouseY - WindowY() - #CentreOeilG
DistanceSouris2.f = Sqr(Pow(Dx, 2) + Pow(Dy, 2))
Dx = Dx / DistanceSouris2
Dy = Dy / DistanceSouris2
Distance = DistanceSouris2 / TailleEcranY * 4
If Distance > 1 : Distance = 1 : EndIf
OeilDX = Dx * Distance * #RayonOeil + #CentreOeilD
OeilDY = Dy * Distance * #RayonOeil + #CentreOeilG
; on dessine les yeux
UseImage(0)
StartDrawing(ImageOutput())
Box(0, 0, 200, 200, $FFFFFF)
Circle(OeilGX, OeilGY, #TaillePupille, 0)
Circle(OeilDX, OeilDY, #TaillePupille, 0)
StopDrawing()
; on affiche la fenêtre
SetGadgetState(0, UseImage(0))
; Déplacement de la fenêtre
If Abs(PosX - CibleX) <= 2 And Abs(PosY - CibleY) <= 2 ; On donne un point à rejoindre
CibleX = Random(TailleEcranX + 2 * #Cadre) - #Cadre
CibleY = Random(TailleEcranY + 2 * #Cadre) - #Cadre
Debug StrF(CibleX, 0) + " " + StrF(CibleY, 0)
EndIf
DistanceSouris.l = (DistanceSouris1 + DistanceSouris2) / 2
; on se déplace vers la cible
Dx = CibleX - PosX
Dy = CibleY - PosY
DistanceCible = Sqr(Pow(Dx, 2) + Pow(Dy, 2))
Dx = Dx / DistanceCible * #Avance
Dy = Dy / DistanceCible * #Avance
PosX + Dx
PosY + Dy
If DistanceSouris < #DistanceMinSouris
; on s'écarte de la souris
Dx = PosX - MouseX
Dy = PosY - MouseY
DistanceCible = Sqr(Pow(Dx, 2) + Pow(Dy, 2))
PosX + Dx / DistanceCible * #Avance
PosY + Dy / DistanceCible * #Avance
EndIf
If Abs(PosX - PosXSave) < 0.02 And Abs(PosY - PosYSave) < 0.02
; si la souris est proche de la cible
Dx = CibleX - PosX
Dy = CibleY - PosY
DistanceCible = Sqr(Pow(Dx, 2) + Pow(Dy, 2))
Dx = Dx / DistanceCible * #Avance
Dy = Dy / DistanceCible * #Avance
PosX + Dx
PosY + Dy
EndIf
PosXSave = PosX
PosYSave = PosY
MoveWindow(PosX - (#TailleOeil + #TaillePupille - #EspaceOeilPupille) * 2 + #EspaceEntreYeux / 2, PosY - (#TailleOeil + #TaillePupille - #EspaceOeilPupille) * 2)
EndProcedure
If OpenWindow(1, 0, 0, 200, 200, #PB_Window_Invisible, "Yeux")
If OpenWindow(0, 0, 0, (#TailleOeil + #TaillePupille - #EspaceOeilPupille) * 4 + #EspaceEntreYeux, (#TailleOeil + #TaillePupille - #EspaceOeilPupille) * 2, #PB_Window_BorderLess | #WS_SYSMENU | #PB_Window_ScreenCentered, "Yeux", WindowID(1))
SetWindowPos_(WindowID(), -1, 0, 0, 0, 0, #SWP_NOSIZE | #SWP_NOMOVE)
; on découpe la fenêtre
RegionOeilG = CreateEllipticRgn_(#CentreOeilG - #TailleOeil, #CentreOeilG - #TailleOeil, #CentreOeilG + #TailleOeil, #CentreOeilG + #TailleOeil)
RegionOeilD = CreateEllipticRgn_(#CentreOeilD - #TailleOeil, #CentreOeilG - #TailleOeil, #CentreOeilD + #TailleOeil, #CentreOeilG + #TailleOeil)
CombineRgn_(RegionOeilG, RegionOeilG, RegionOeilD, #RGN_OR)
SetWindowRgn_(WindowID(), RegionOeilG, #True)
DeleteObject_(RegionOeilG)
DeleteObject_(RegionOeilD)
PosX = WindowX()
PosY = WindowY()
CibleX = PosX
CibleY = PosY
CreateImage(0, WindowWidth(), WindowHeight())
If CreateGadgetList(WindowID())
ImageGadget(0, 0, 0, 0, 0, UseImage(0))
EndIf
Yeux()
Timer = SetTimer_(WindowID(), 0, #Vitesse, @Yeux())
Repeat
Event = WaitWindowEvent()
If Event = #WM_LBUTTONDOWN ; Si on clique sur les yeux, on quitte
Event = #PB_Event_CloseWindow
EndIf
Until Event = #PB_Event_CloseWindow
KillTimer_(WindowID(), Timer)
EndIf
EndIf
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?
[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]