curseur souris

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
venom
Messages : 3138
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

curseur souris

Message par venom »

bonjour,

voila sa va paraitre peut etre un peut bete mais bon j'ai fait ceux-ci :

Code : Tout sélectionner

InitMouse()
InitSprite() 
InitKeyboard()

If  OpenScreen(800, 600, 32, "test grille")
  If CreateImage(0, 800, 800)
    If StartDrawing(ImageOutput(0))
      
      For a = 0 To 800 Step 10
       Line(a, 0 , 0, 800, RGB(0,0,255))
       Line(0, a, 800, 0, RGB(0,0,255))
      Next 
      StopDrawing()
      
    EndIf
  EndIf 
  CreateGadgetList(ScreenID())
    ImageGadget(0, 0, 0, 0, 0, ImageID(0))

  Repeat
    
ExamineKeyboard()
     
  Until KeyboardPushed(#PB_Key_Escape)
 EndIf 
facile :D .

mais comment faire pour déplacer un curseur de souris par dessus des lignes :? la est ma question :oops: .
car j'y arrive mais c'est soit l'un ou l'autre :cry: mais pas les deux en meme temps
d'avance merci.



.@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
lionel_om
Messages : 1500
Inscription : jeu. 25/mars/2004 11:23
Localisation : Sophia Antipolis (Nice)
Contact :

Message par lionel_om »

Je ne comprend pas trop la question... Tu veux un genre de SetMouseX/Y() ?
Dans ce cas, tu cache la souris, tu affiche un sprite pour la remplacer et tu calcules les nouvelles coordonnées ainsi :

Code : Tout sélectionner

MouseX = Mouse()
MouseY = MouseY()
MouseX = MouseX - MouseX%10
MouseY = MouseY - MouseY%10
Et la tu affiche ton sprite souris avec ces deux coordonnées

Lio :wink: (espérant avoir répondu juste !)
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
Avatar de l’utilisateur
venom
Messages : 3138
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Message par venom »

je t'avoue que je ne comprend pas bien le code que tu m'a fournie mais je ré explique :wink:

la quand tu lance le code tu a une suite de ligne horizontale et une vertical .
d'accord :wink: .

et bien je soiuhaiterais que ces lignes fasse un effet de font donc que j'ai un curseur qui se balade devant et sur les lignes :wink: .
ex:

Image :wink:


@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Avatar de l’utilisateur
case
Messages : 1546
Inscription : lun. 10/sept./2007 11:13

Message par case »

tu veux que le curseur soit toujours au dessus des lignes ?
dans ce cas dessine le en dernier juste avant le flipbuffers
RV
Messages : 209
Inscription : sam. 18/nov./2006 15:16

Message par RV »

@venom

Quand tu es en mode écran (OpenScreen), sers-toi des sprites plutôt que des ImageGadget qui sont plus réservés au mode fenêtre (OpenWindow). :wink:

D'ailleurs je ne savais pas qu'on pouvait afficher un ImageGadget dans un Screen! 8O

J'ai dessiné un curseur bidon tu verras mais tu peux le remplacer par un curseur que tu as déjà...

Ceci répond à ta question?

Code : Tout sélectionner

InitMouse() 
InitSprite() 
InitKeyboard() 

If  OpenScreen(800, 600, 32, "test grille") 
  
  ;Grille de fond
  If CreateSprite(0, 800, 800)                ;je crée un sprite 0
    If StartDrawing(SpriteOutput(0))          ;je demande à dessiner dessus
      For a = 0 To 800 Step 10                ;ta grille...
        Line(a, 0 , 0, 800, RGB(0,0,255))     ;...
        Line(0, a, 800, 0, RGB(0,0,255))      ;...
      Next                                    ;...
      StopDrawing()                           ;j'arrète de dessiner sur le sprite 0
    EndIf 
  EndIf 
  
  ;Curseur
  If CreateSprite(1,10,10,#PB_Sprite_Texture)                     ;je crée un sprite 1
    If StartDrawing(SpriteOutput(1))                              ;je demande à dessiner dessus
      Box(0,0,SpriteWidth(1),SpriteHeight(1),RGB(255,0,255))      ;je dessine un rectangle de coul rose aux dimensions du sprite
      Line(0,0,SpriteWidth(1),0,RGB(255,255,255))                 ;je dessine des lignes...
      Line(0,0,0,SpriteHeight(1),RGB(255,255,255))                ;...qui forment...
      LineXY(SpriteWidth(1),0,0,SpriteHeight(1),RGB(255,255,255)) ;...le 'curseur'
      StopDrawing()                                               ;j'arrète de dessiner sur le sprite 1
      TransparentSpriteColor(1,RGB(255,0,255))                    ;je définis la couleur de transparence du sprite 1 (le rose du dessus)
    EndIf
  EndIf
  
  
  Repeat 
    
    FlipBuffers()                                       ;synchronise l'écran
    ClearScreen(RGB(0,0,0))                             ;efface l'écran pour de nouveau dessiner dessus
    
    ExamineMouse()
    
    DisplaySprite(0,0,0)                                ;je dessine le sprite 0 (non transparent)
    DisplayTransparentSprite(1,MouseX(),MouseY())       ;je dessine le sprite transparent 1 (le rose de ce sprite ne sera pas affiché)
    
    ExamineKeyboard() 
    
  Until KeyboardPushed(#PB_Key_Escape) 
EndIf 
Dernière modification par RV le dim. 14/oct./2007 9:39, modifié 1 fois.
Avatar de l’utilisateur
venom
Messages : 3138
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Message par venom »

:P cool je t'en remercie bien je vais bien lire ton code pour bien le comprendre puis sa sera good!. :wink:


@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
bernard13
Messages : 1221
Inscription : mer. 05/janv./2005 21:30

Message par bernard13 »

venom , tu crée un editeur?
RV
Messages : 209
Inscription : sam. 18/nov./2006 15:16

Message par RV »

@venom

Je t'ai ajouté quelques explications...si ça peut t'aider? :wink:
Avatar de l’utilisateur
venom
Messages : 3138
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Message par venom »

@ bernard13
venom , tu crée un editeur?
non je ne sais pas encore a quoi sa va me servir mais bon on ne sais jamais :wink: .


@ RV
merci c'est simpa de ta part.



@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Avatar de l’utilisateur
venom
Messages : 3138
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Message par venom »

a d'accord je comprend mieu des que l'on souhaite refaire un dessin sur le sprite il faut remetre

Code : Tout sélectionner

CreateSprite
:wink: .
c'est bien simpa tes explication merci.


@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
RV
Messages : 209
Inscription : sam. 18/nov./2006 15:16

Message par RV »

Code : Tout sélectionner

CreateSprite()
Tu crées un sprite

Code : Tout sélectionner

StartDrawing(SpriteOutpout(...))
  ...
StopDrawing() 
pour dessiner dedans! :wink:
Répondre