Re: Mauszeiger rotieren
Verfasst: 02.05.2013 15:17
Ich vermute mal die machen den echte Cursor "Invisible" und zeichen dann ihren eigenen Cursor/Bild.
Das kannst du mit PB ja auch machen:
Das kannst du mit PB ja auch machen:
Code: Alles auswählen
Enumeration
#Window
#Gadget
#Image
EndEnumeration
Global Dim Image.l(31, 31)
UsePNGImageDecoder()
If CatchImage(#Image, ?Image)
If StartDrawing(ImageOutput(#Image))
DrawingMode(#PB_2DDrawing_AllChannels)
For Y = 0 To 31
For X = 0 To 31
Image(X, Y) = Point(X, Y)
Next
Next
StopDrawing()
EndIf
EndIf
Procedure DrawRotatedImage(Array Image.l(2), X.i, Y.i, Angle.f)
Protected Size.i = ArraySize(Image(),1)+1
Protected U.f, V.f, IX.i, IY.i
Protected Sin.f = Sin(Angle), Cos.f = Cos(Angle)
For IY = -Size To Size
For IX = -Size To Size
U = Cos*IX - Sin*IY + 15.5
V = Sin*IX + Cos*IY + 15.5
If U >= 0 And U < Size And V >= 0 And V < Size And X+IX >= 0 And X+IX < OutputWidth() And Y+IY >= 0 And Y+IY < OutputHeight()
Plot(X+IX, Y+IY, Image(Int(U), Int(V)))
EndIf
Next
Next
EndProcedure
OpenWindow(#Window, 0, 0, 800, 600, "WindowTitle", #PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)
CanvasGadget(#Gadget, 0, 0, WindowWidth(#Window), WindowHeight(#Window))
SetGadgetAttribute(#Gadget, #PB_Canvas_Cursor, #PB_Cursor_Invisible)
Procedure Update()
Protected MouseX.i = GetGadgetAttribute(#Gadget, #PB_Canvas_MouseX)
Protected MouseY.i = GetGadgetAttribute(#Gadget, #PB_Canvas_MouseY)
Protected Angle.f
If StartDrawing(CanvasOutput(#Gadget))
Angle.f = ATan2(MouseX-OutputWidth()/2, MouseY-OutputHeight()/2)
Box(0, 0, OutputWidth(), OutputHeight(), $FFFFFF)
DrawingMode(#PB_2DDrawing_AlphaBlend)
DrawRotatedImage(Image(), MouseX, MouseY, -Angle)
StopDrawing()
EndIf
EndProcedure
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
End
Case #PB_Event_Gadget
Select EventGadget()
Case #Gadget
Update()
EndSelect
EndSelect
ForEver
DataSection
Image:
Data.q $0A1A0A0D474E5089,$524448490D000000,$2000000020000000,$7A7A730000000608,$47527301000000F4
Data.q $0000E91CCEAE0042,$FF0044474B620600,$93A7BDA0FF00FF00,$7359487009000000,$60EA000060EA0000
Data.q $00000076DEC98401,$05DD07454D497407,$42E8EB2428010D02,$544144494F030000,$55546C5B96EDC358
Data.q $E873339CFFFF8614,$AC040B6D19952C6D,$B10AD02AC550EDAD,$1899BCA5A4691A8D,$A89183E351A2F8A2
Data.q $2621360D6A9464A9,$F0C5F06925E318C6,$481789898A282C60,$2DA68495A960DA18,$A74C20614B4EA4B4
Data.q $E9A1F2F7B399CCE1,$5F32FA090CE03A83,$D65F7F97DAF65EB2,$FFCF2793C9E40D9F,$F3E5A8F5DC97AF0C
Data.q $D6FAED281A1D8CFB,$6DF66FAFC4CB9BDD,$E45EFD41AB632DB2,$256B8CFD5AF67A50,$79D0286569446B9E
Data.q $A5DBB735A7E54D77,$F7CD7B4F162CEEB9,$6F8FD97CB2BD3C54,$47EF6780939C22B7,$1F9B1B47E0BABAD5
Data.q $E5271C02FEDF5AE9,$7D60E91E7E202AE6,$6BC384CFE3CB726B,$AD32DB0C79EE8F6A,$69688DE5E1BDFD67
Data.q $7596C6BEF7B1586A,$CF483A36245B0D15,$C167CDA10F23EB75,$E7610278BD5EF2CE,$770F01B75DB178C2
Data.q $FEFFDBE81A5A5F6C,$620FEB5F3DDDC192,$F19BDD81BE33E61E,$AEF735EEAADAE364,$A63DAD16AA1C595F
Data.q $189E390F8CCC7192,$594A7809F5922957,$4DABCA06165795B7,$FAA7138E77117E9A,$CC4E077DE1A1C9D5
Data.q $E808BFD982337E77,$B2BF97EA9A45F0E9,$110024B7C4BAAABA,$791BC5140002000D,$0A410004340202E1
Data.q $786064E7334BC7B4,$C7C7C76E747468EC,$D9772D1A61ED9670,$2C143DB2DDD4B79F,$AA84DE61716B0C03
Data.q $D3F1C49ABE984013,$B7760EDD26276217,$FA17356B5B6F3FDB,$A2350611FFC505CD,$118E655A6CD73C67
Data.q $AD01A111412A1ADC,$008426E344534445,$4E0D44E76735A21A,$455CEAE323CCCFA9,$85622B2A6C050780
Data.q $1D5C2E490A4922DF,$210F1C580386F240,$A7E572CBC9C1A549,$0988A9438DEBB551,$B0E36C5E3A93FD00
Data.q $9F91708D9179726D,$4256910880908884,$0C06943ECE9E0157,$CA64921111483003,$EA13FD33EACE8C13
Data.q $E1947FDEDCEFAEC5,$57FE0D89F4B9AB83,$4A8341556BE683AB,$37FA4B89C253E643,$3E8C8DF06657E157
Data.q $7372BAA123A4E840,$7E7985C84B215953,$EF4BF4A787C7569F,$B391D11A3346E0FE,$B4EF9BD48FE07972
Data.q $6158693E470923D9,$CFC3915F4C055CFA,$364166B5AD2277EF,$E356EAB7B5262E02,$E4B065AD46823B81
Data.q $3872FA94E4F09CFC,$BAF26F17F0FCEDE6,$DA957E7770B8E84E,$5F494F991EC3A7B7,$7000E0F81508C84D
Data.q $433BE4B6B2AD3FBF,$0C2A2EC7A8F8144C,$37A7BAD353EEE94D,$B5EB178AD5FF25EA,$C6FE6D5BD8EA60F3
Data.q $96B9DA4DF9F48499,$4A9E13039A62B2D9,$8DE8BFA13A6A7838,$3C9E4F23E7FCBDA6,$B5E7B3E2AB13F899
Data.q $490000000064DE34,$00826042AE444E45
EndDataSection