plusieurs click bouton gauche de la souris , fait tourner le bouton dans un sens
plusieurs click bouton droit de la souris , fait tourner dans un autre ...
Code : Tout sélectionner
; By Dobro
Enumeration
#fenetre
#canvas
#bouton
#image_bouton
EndEnumeration
Structure image
x.l
Y.l
EndStructure
Global Dim image.image(360)
Declare rotate_image(id,x2,y2,degres)
If OpenWindow(#fenetre, 0, 0, 220, 220, "CanvasGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
; *********** lit l'image en Data ****************************************
Largeur=39 ; affiche en 800 x600 la vrais resolution est de :39x39
Hauteur=39
Global Dim tableau(Largeur, Hauteur)
CreateImage(#image_bouton, Largeur, Hauteur)
If StartDrawing(ImageOutput(#image_bouton))
; ***********mise en tableau ************
For i = 0 To Hauteur -1
For j = 0 To Largeur -1
Read a.l
tableau(j, i)=a.l
Next j
Next i
; **************************
For i = 0 To Hauteur -1
For j = 0 To Largeur -1
Plot(j,i,tableau(j,i))
Next j
Next i
StopDrawing()
EndIf
; ***********************************************************************
global larg_image =ImageWidth(#image_bouton)
global haut_image= ImageHeight(#image_bouton)
Global Dim tabl1(larg_image+10,haut_image+10 )
; ******* mise en tableau de l'image **********
StartDrawing ( ImageOutput ( #image_bouton) )
For Y=1 To haut_image-1
For x=1 To larg_image-1
tabl1(x,Y)= Point (x,Y)
Next x
Next Y
StopDrawing ()
;*****************************************************
CanvasGadget(#canvas, 10, 10,larg_image,haut_image )
Repeat
Event = WaitWindowEvent(20)
If Event = #PB_Event_Gadget
if EventGadget() = #canvas
if EventType() = #PB_EventType_LeftButtonDown
degres=degres+10
if degres>359 :degres=1:endif
rotate_image(#image_bouton,larg_image,haut_image,degres)
elseif EventType() = #PB_EventType_RightButtonDown
degres=degres-10
if degres<1 :degres=359:endif
rotate_image(#image_bouton,larg_image,haut_image,degres)
endif
endif
endif
StartDrawing(CanvasOutput(#canvas))
DrawImage(ImageID(#image_bouton),1,1)
StopDrawing()
Until Event = #PB_Event_CloseWindow
EndIf
Procedure rotate_image(id,x2,y2,degres)
; By Dobro
x3=x2/2
y3=y2/2
StartDrawing ( ImageOutput ( id ) )
For Y=1 To y2-1
For x=1 To x2-1
; ********* voici la formule de la rotation d'image *********
image(degres)\x= x3+(x-x3) * Cos (degres* #PI /180) +( Y-y3)* Sin (degres* #PI /180)
image(degres)\Y= y3-(x-x3) * Sin (degres* #PI /180) + (Y-y3)* Cos (degres* #PI /180)
;*****************************************************
; *** on evite que les coordonée sorte du tableau dim ****
If image(degres) \Y <0
image(degres) \Y=y2-image(degres)\Y
EndIf
If image(degres)\Y>y2
image(degres) \Y =0+image(degres)\Y-y2
EndIf
If image(degres)\x>x2
image(degres)\x=0+image(degres)\x-x2
EndIf
If image(degres)\x<1
image(degres)\x=x2-image(degres)\x
EndIf
; *****************************************
Plot (x,Y,tabl1( image(degres)\x,image(degres)\Y)) ; on dessine l'image rotaté a l'aide du tableau de points
Next x
Next Y
StopDrawing ()
EndProcedure
DataSection
Data.l 39,39
data.l $171313,$2F2928,$2B2423,$302827,$302927,$2E2624,$2A2220,$272220,$2B2524,$2C2625,$312A29,$302827,$28201F,$2B2524,$302A29,$2D2625,$2C2524,$2D2625,$282221
data.l $282221,$2E2827,$2D2726,$2B2524,$2B2425,$2C2526,$2C2524,$292120,$2A2221,$2C2524,$2E2726,$2A2322,$2D2726,$2F2928,$282221,$292523,$2D2827,$2D2726,$2C2524,$161312
data.l $2B2423,$594C4A,$544542,$5B4C49,$584946,$564744,$584946,$625652,$5F504D,$554643,$5F504D,$625351,$5A4D4B,$584C4A,$554C49,$514344,$57494A,$5A4C4D,$554748,$57494A
data.l $5A4C4D,$554748,$57494A,$574B4B,$615555,$685C5C,$594C4A,$524341,$544543,$584645,$584645,$504440,$554945,$594E4A,$605452,$594D4B,$574B49,$584A4B,$2B2424,$2A2322
data.l $5C504C,$5B4C49,$5D4E4B,$5A4B48,$5B4C49,$625350,$5C4B48,$574845,$4D3E3B,$534743,$554947,$564D4A,$48413E,$37322F,$2B2323,$292121,$251D1D,$1E1616,$1E1616,$1F1717
data.l $271F1F,$393131,$3A3232,$3D3535,$4F4545,$5A4E4E,$5F5250,$5C4D4B,$584645,$544241,$554943,$594D47,$4E433F,$423733,$3D312F,$423636,$3F3333,$20191A,$2B2422,$60514E
data.l $5B4F4B,$5A4E4A,$584C48,$594C4A,$5C4F4D,$584744,$5C4D4A,$574A48,$4D4441,$362F2C,$2B2623,$1E1B17,$14110D,$80907,$20301,$10200,$10200,$10200,$100,$10200
data.l $A0B09,$F0B0A,$14100F,$2B2625,$423A3A,$4D413F,$4E413F,$5E4F4D,$625351,$5B4F49,$564A44,$4B3F3B,$3D312D,$322523,$312525,$2C2020,$151011,$2E2625,$635451,$635753
data.l $5B4F4B,$534644,$574A48,$625553,$5D504E,$4F4341,$3E3532,$292423,$110D0C,$50302,$20000,$20000,$101,$0,$101,$0,$0,$0,$101,$0
data.l $10200,$20000,$70302,$110C0B,$201818,$332A27,$4C4340,$524644,$5C504C,$564A46,$605450,$655856,$4C3F3D,$392D2B,$312727,$171212,$292120,$5A4B48,$625652,$5B4E4C
data.l $544745,$564A48,$5E5250,$554949,$312727,$171211,$70505,$10101,$0,$0,$10101,$0,$10101,$30303,$20202,$10101,$20202,$20202,$0,$100
data.l $100,$30402,$20000,$80403,$14100F,$2B2623,$3E3936,$574A48,$5B4E4C,$5C4D4B,$615250,$584B49,$433735,$2F2623,$161211,$251D1C,$4D3E3B,$504440,$504341,$594D4B
data.l $584C4A,$4C403E,$282021,$B0506,$50001,$0,$202,$1,$30204,$30204,$80606,$B0909,$B0909,$E0C0C,$110F0F,$E0C0C,$B0909,$C0A0A,$60808,$200
data.l $30402,$100,$30100,$30100,$B0908,$292524,$4B3D3E,$564947,$5A4B49,$5E4F4D,$5C4F4D,$564B47,$443B37,$171411,$2A2423,$5D4E4B,$5C4C46,$53453F,$534844,$403936
data.l $1B1716,$30100,$100,$100,$100,$20503,$301,$80B09,$F1210,$1C1C1C,$222424,$262828,$272929,$272929,$262828,$232525,$1C1C1C,$151515,$131313,$B0B0B
data.l $80808,$0,$10101,$0,$20404,$171717,$3A3635,$4B423F,$544844,$5A4A44,$544340,$514240,$201A19,$2D2726,$625350,$61534D,$5E524E,$4A413D,$221D1C,$20000
data.l $40404,$0,$0,$0,$80808,$121212,$1D1F1F,$242626,$252525,$1A1A1A,$181818,$141414,$131313,$161616,$151515,$1D1D1D,$1E1E1E,$1F1F1F,$181818,$111111
data.l $A0A0A,$30303,$0,$20202,$50505,$231F1E,$403936,$4C403C,$51423F,$564744,$554644,$292221,$302927,$5D4E4B,$564744,$4C413D,$2E2724,$D0809,$0,$0
data.l $20202,$90909,$B0B0B,$1C1C1C,$252525,$1C1C1C,$111111,$40404,$20202,$10101,$0,$0,$10101,$10101,$10101,$90909,$111111,$1A1A1A,$1A1A1A,$161616
data.l $F0F0F,$70707,$20000,$0,$60403,$251D1D,$483C3A,$5E524E,$60514E,$504341,$27201F,$2E2724,$594A47,$4B3E3C,$2D2421,$C0708,$0,$102,$30303,$40404
data.l $131313,$222222,$242424,$F0F0F,$0,$90909,$363C3B,$616766,$888D8C,$A9AEAD,$ABB0AF,$8C9190,$666C6B,$3C4241,$131515,$0,$10303,$101212,$1C1C1C,$181818
data.l $161414,$90707,$10303,$20000,$A0504,$342A2A,$544846,$584B49,$554846,$2B2423,$2A2422,$554A46,$423838,$191413,$20000,$10002,$203,$50505,$C0C0C,$1F1F1F
data.l $1F2121,$80A0A,$50707,$363838,$787A7A,$AEBCBA,$C4D1CF,$D2DDDB,$DCE7E5,$DDE8E6,$D4DFDD,$C7D4D2,$B0BEBC,$858B8A,$3C4241,$40908,$0,$D0F0F,$171717,$181616
data.l $100E0E,$0,$30303,$50001,$1D1718,$423838,$584C4C,$534745,$26201F,$292321,$463C3C,$251D1E,$70203,$20000,$10101,$202,$B0B0B,$232323,$212121,$202
data.l $40908,$5D6362,$BCC2C1,$E1E9E8,$D7E9E8,$C7D7D6,$A9B5B5,$788282,$7A8484,$ADB9B9,$C7D7D6,$D2E4E3,$DEE9E7,$B3BEBC,$606867,$151B1A,$100,$90B0B,$181818,$191919
data.l $F1111,$30505,$20000,$70203,$292324,$584E4E,$534745,$282221,$2B2725,$3C3435,$140E0F,$50002,$20000,$30402,$90A08,$1A1818,$222222,$70909,$50A09,$4D5554
data.l $B8C3C1,$DDEAE8,$C2D0CE,$ABBBBA,$A5B3B2,$929C9C,$535B5B,$5A6262,$9FA9A9,$ACBAB9,$A8B8B7,$BECCCA,$D6E3E1,$BBC6C4,$68706F,$C1211,$100,$90B0B,$1B1B1B,$151717
data.l $40606,$20103,$20001,$151012,$4B4344,$564D4A,$2E2827,$262222,$2B2526,$90406,$20001,$20000,$70504,$151410,$242123,$141113,$40607,$54595A,$C0C8C8,$D6E2E2
data.l $B2C2C1,$A1B1B0,$9CAAA9,$9FA9A9,$919697,$5C6061,$676B6C,$A7ACAD,$ACB6B6,$9BA9A8,$9DAEAB,$B6C4C2,$D1DEDC,$C3CECC,$565E5D,$E1312,$0,$F1111,$171919,$E1010
data.l $40607,$1,$60103,$3D3738,$5C5350,$2B2524,$242020,$1C1A1A,$0,$10002,$30101,$A0A0A,$171A18,$241F20,$20202,$191F1E,$9FA9A9,$D8E6E5,$BACAC9,$9BABAA
data.l $9DADAC,$9AAFB0,$9CAEAD,$8F9B9B,$5D6362,$656B6A,$A5AFAF,$ABBBBA,$99ADAE,$9DADAC,$9AA8A7,$B8C4C4,$D0DEDD,$9FADAC,$303D3B,$100,$D0B0B,$131515,$1E1E1E,$F0D0D
data.l $0,$0,$2E2C2B,$574F4F,$2E2727,$242020,$171515,$0,$10002,$30101,$F0F0F,$202321,$171515,$80808,$545A59,$C9D3D3,$C4D2D1,$9FAFAE,$A1B1B0,$A2B2B1
data.l $A0B5B6,$A1B3B2,$97A1A1,$5D6362,$646A69,$A7B1B1,$AEBEBD,$9FB3B4,$A3B3B2,$A5B3B2,$9FABAB,$B4C2C1,$C7D5D4,$74817F,$70D0C,$20000,$B0D0D,$1C1C1C,$141212,$30303
data.l $0,$1F1D1C,$504848,$2F2829,$1C1818,$B0909,$0,$20103,$50303,$121212,$1B1E1C,$80606,$202222,$909695,$D0DCDC,$AEBEBD,$99A9A8,$A7B7B6,$A7B7B6,$A3B7B8
data.l $A7B7B6,$9BA5A5,$5E6463,$656B6A,$ABB5B5,$B4C2C1,$A3B5B6,$A1B3B2,$ABB9B8,$9DABAA,$A7B5B4,$C9D9D8,$9FACAA,$1E2423,$20202,$70909,$1D1D1D,$1B1919,$70707,$0
data.l $D0B0A,$494141,$302929,$191515,$40202,$0,$1,$70505,$191919,$161917,$0,$393B3B,$B0B8B7,$BCC8C8,$A2B2B1,$A8B8B7,$ADBDBC,$ABBBBA,$A7B9BA,$AFBFBE
data.l $9DA7A7,$606665,$696F6E,$B1BBBB,$BDCBCA,$A6B5B7,$A9BBBA,$AABAB9,$A7B5B4,$A5B3B2,$B5C5C4,$B1BEBC,$363C3B,$30303,$50707,$191919,$1E1C1C,$90909,$10101,$50302
data.l $4E4646,$322B2C,$191515,$20000,$0,$1,$B0909,$1C1C1C,$171A18,$202,$424746,$C6D1CF,$B3C1C0,$9AAAA9,$B1C1C0,$B1C1C0,$B1C1C0,$B0C2C3,$AEBEBD,$ABB7B7
data.l $A5ADAC,$ABB3B2,$BDC7C7,$BBC9C8,$B0BFC1,$B0C2C1,$B2C2C1,$B2C0BF,$A2B0AF,$ACBCBB,$C0CECC,$474D4C,$0,$60808,$181818,$242222,$D0D0D,$0,$20000,$514949
data.l $312A2A,$191515,$20000,$0,$60507,$E0C0C,$181818,$161917,$201,$4C5251,$D1DCDA,$ADBBBA,$95A5A4,$B4C6C5,$B4C4C3,$B7C7C6,$B2C6C7,$B6C8C7,$BAC8C7,$C1CECC
data.l $C3D0CE,$C1CDCD,$BCCCCB,$B3C5C6,$B2C4C3,$B7C7C6,$BBC9C8,$A2B2B1,$A4B4B3,$C2D0CE,$525857,$10101,$202,$121212,$262424,$101010,$0,$20000,$544C4C,$312A2B
data.l $1D1919,$30101,$0,$40305,$C0A0A,$191919,$151816,$100,$4A504F,$C0CDCB,$A3B3B2,$95A7A6,$B6C8C7,$BACAC9,$BCCCCB,$B9CDCE,$B8CAC9,$BACAC9,$C3D1CF,$C2D0CE
data.l $BACAC9,$BCCCCB,$BBCDCE,$BBCDCC,$BACAC9,$BAC8C7,$A2B2B1,$A2B2B1,$B7C5C3,$4C5251,$0,$20404,$131313,$282626,$111111,$0,$20000,$4F4747,$302929,$1C1818
data.l $20000,$10101,$1,$B0909,$1D1D1D,$121513,$100,$343C3B,$A8B5B3,$A6B6B5,$99ABAA,$B3C5C4,$C1D1D0,$BFCFCE,$BACFD0,$BACFCD,$BED0CF,$BFD0CD,$BFD0CD,$C1D1D0
data.l $BED0CF,$BBCFD0,$BED0CF,$C2D2D1,$BAC8C7,$A2B2B1,$A7B7B6,$A8B6B4,$373F3E,$10101,$30505,$141414,$262424,$F0F0F,$0,$30100,$4C4444,$312A2A,$1F191A,$A0405
data.l $10101,$101,$30505,$171717,$171515,$0,$2C3130,$8E9695,$B0BDBB,$98A9A6,$B0C0BF,$C6D6D5,$C7D5D4,$C6D4D2,$C6D4D2,$C7D5D3,$C5D3D1,$C5D3D1,$C6D4D2,$C6D4D2
data.l $C5D3D1,$C6D2D2,$CBD9D8,$B1C1C0,$9DAEAB,$A8B6B4,$9AA5A3,$292F2E,$0,$70505,$1B1B1B,$242626,$A0D0B,$100,$120E0D,$5A5252,$302A2A,$252021,$151011,$10101
data.l $0,$10303,$151515,$171515,$40606,$B100F,$5C6463,$ADBAB8,$9CADAA,$99A9A8,$C1D1D0,$C7D7D6,$CBD9D7,$C9D7D5,$CAD8D6,$CCDAD8,$CDDBD9,$CCDAD8,$CBD9D7,$CCDAD8
data.l $CCDAD9,$C4D2D1,$9AAAA9,$93A4A1,$AEBCBA,$76817F,$B100F,$202,$70505,$1D1D1D,$1E2020,$50806,$20301,$1E1A19,$574F4F,$322C2C,$262121,$1D1918,$10200,$0
data.l $20404,$111313,$191919,$131313,$0,$212726,$8F9A98,$ADBBB9,$91A3A2,$A9BBBA,$C5DAD8,$CFDDDB,$CFDDDB,$CCDAD8,$CBD9D7,$CCDAD8,$CEDCDA,$CFDDDB,$CFDDDB,$C9D9D8
data.l $ACBCBB,$96A8A7,$9FB0AD,$93A09E,$3E4645,$0,$10101,$D0B0B,$282828,$1B1B1B,$10200,$20000,$312D2C,$5C5454,$2B2525,$282323,$2C2726,$90706,$0,$101
data.l $A0C0C,$1B1D1D,$181818,$30505,$70C0B,$575F5E,$9FACAA,$9FAFAE,$92A4A3,$A4B9B7,$C5D3D2,$CEDCDB,$D2E0DF,$D3E1E0,$D4E2E1,$D4E2E1,$CFDDDC,$C5D3D2,$ABBDBC,$8FA1A0
data.l $9DADAC,$A2B0AE,$5E6967,$131918,$20202,$50303,$151515,$2A2A2A,$141414,$100,$60201,$45403F,$685E5E,$2A2424,$292322,$3F3835,$191514,$20000,$0,$40606
data.l $191B1B,$242424,$141414,$10303,$161C1B,$596462,$99A7A6,$9EAEAD,$8EA09F,$98A6A5,$A9B7B6,$B9C7C6,$C5D3D2,$C6D4D3,$BCCAC9,$ADBBBA,$9BA9A8,$8D9F9E,$9CACAB,$99A7A6
data.l $687573,$1B2322,$10303,$10101,$C0A0A,$252525,$1E1E1E,$90909,$30100,$161110,$564E4E,$625858,$2D2727,$292322,$4F4341,$2C2424,$80403,$20000,$40404,$141617
data.l $303030,$2C2C2C,$111111,$0,$111716,$5D6565,$98A4A4,$A1AFAE,$97A5A4,$92A09F,$869493,$82908F,$82908F,$869493,$92A09F,$97A5A4,$9CAAA9,$99A5A5,$646E6E,$202827
data.l $100,$0,$50303,$211C1D,$2B2D2D,$101010,$20000,$60201,$322A2A,$645A5A,$524646,$2A2323,$2E2725,$574A48,$413835,$1A1212,$40000,$10101,$C0E0F,$242424
data.l $373737,$262424,$60606,$0,$15191A,$4A5252,$768080,$8F9D9C,$96A4A3,$96A4A3,$98A6A5,$97A5A4,$94A2A1,$95A3A2,$909E9D,$828C8C,$4A5252,$14191A,$10605,$20202
data.l $40202,$100E0E,$2D2829,$1A1C1C,$40404,$20000,$201B1A,$534B4B,$605656,$504444,$292222,$2B2321,$544543,$554947,$332929,$B0506,$20000,$40305,$1A1A1A,$272727
data.l $161414,$20000,$30101,$203,$1,$131819,$3F4D4C,$606E6D,$7B8988,$8B9998,$8B9998,$7C8A89,$647271,$465453,$202526,$405,$1,$0,$20000,$20000
data.l $1E1C1C,$211F1F,$80A0A,$0,$70505,$494443,$6F6565,$4D4141,$57494A,$2E2727,$2C2525,$5B4B4C,$544647,$463A3A,$2A2425,$20202,$100,$20202,$A0A0A,$20202
data.l $1,$1,$D0C0E,$141315,$40305,$70909,$70909,$C0E0E,$121414,$131515,$F1111,$90B0B,$60808,$40201,$D0E0C,$60705,$10200,$10101,$0,$40606
data.l $40606,$100,$30402,$2A2522,$6B605C,$6B5C59,$584946,$5A4E4A,$282220,$2C2625,$594A48,$584947,$544848,$4A4242,$24201F,$30402,$10101,$0,$0,$20202
data.l $E0D0F,$2D2C2E,$353738,$2C2E2F,$191919,$101010,$80808,$40404,$30303,$40404,$80808,$D0D0D,$181917,$222222,$262626,$131313,$0,$0,$202,$0
data.l $0,$2D2928,$625B58,$695E5A,$524340,$584C48,$554945,$1D1716,$2B2523,$5B4C49,$594A48,$4E3F3D,$564A48,$4A4340,$1A1512,$30303,$0,$10101,$0,$F0F0F
data.l $3A3C3D,$414344,$383A3B,$3B3B3B,$363636,$303030,$2C2C2C,$2A2A2A,$292929,$2A2A2A,$2C2C2C,$2D2D2D,$323232,$3A3A3A,$1E1E1E,$30303,$10101,$0,$30303,$231D1E
data.l $605858,$736765,$594C4A,$4F433F,$574B49,$413835,$F0B0A,$26201D,$5B4D47,$655653,$554643,$594A47,$5E524E,$473C38,$22201F,$70504,$30101,$0,$50505,$1B1B1B
data.l $292B2B,$393B3B,$393939,$3A3A3A,$3B3B3B,$3B3B3B,$3A3A3A,$383838,$353535,$333333,$353436,$29282A,$1D1D1D,$90909,$0,$20000,$B0909,$272525,$635757,$6C6060
data.l $645755,$594C4A,$544846,$473E3B,$2B2323,$80605,$28221F,$554741,$5F514B,$5F4F49,$51423F,$4D3E3B,$574845,$5F5B5A,$2F2B2A,$E0A09,$30100,$20000,$0,$60606
data.l $101010,$222222,$292929,$313131,$353535,$353535,$323232,$2B2B2B,$242424,$131214,$50505,$0,$30101,$30101,$A0605,$34302F,$6B6665,$79696A,$5E4F4D,$554846
data.l $514543,$4C4340,$312929,$C0708,$60505,$2D2724,$5A4C46,$53453F,$5A4B48,$5B4C49,$574845,$5E4D4A,$605858,$534B4B,$403838,$272221,$110D0C,$40000,$20000,$40202
data.l $10101,$30303,$50505,$60606,$50505,$50505,$30303,$10101,$20000,$40202,$20000,$F0B0A,$2B2625,$504946,$67605D,$615855,$5A4B49,$544745,$4C403E,$3C3330
data.l $342D2A,$1B1716,$80606,$90809,$2E2724,$5D4E4B,$504440,$574B47,$60514E,$61524F,$574845,$514543,$5A4E4C,$615855,$5B5353,$504848,$332E2D,$1C1817,$F0B0A,$60606
data.l $20202,$0,$10101,$10101,$0,$0,$40404,$D0B0A,$1E1A19,$342F2E,$524D4A,$69605D,$6E635F,$625753,$463A36,$4B3E3C,$544844,$4A413D,$2E2724,$100C0B
data.l $20000,$B0A0C,$50406,$171312,$28201F,$282220,$2F2927,$2A2422,$2A2322,$2C2423,$241E1D,$282120,$292322,$25201F,$2E2929,$353131,$312F2E,$2A2827,$191818,$111010
data.l $C0B0B,$B0A0A,$C0B0B,$C0B0B,$121111,$191818,$232120,$323030,$383534,$322F2D,$2F2A28,$2F2927,$2D2724,$28211E,$2A2422,$292321,$201D1A,$100D0C,$C0B0B,$B0B0B
data.l $A0A0B,$6050
EndDataSection
;
; EPB