Mai 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | | | Calendrier |
|
| | POINTEUR INCREMENTAL | |
| | Auteur | Message |
---|
sergeauze
Nombre de messages : 391 Age : 71 Localisation : Hautes Alpes France Date d'inscription : 09/01/2010
| Sujet: POINTEUR INCREMENTAL Jeu 13 Mar 2014 - 15:00 | |
| bonjour à tous Je ne trouve pas dans Panoramic de fonction qui me permette de positionner le pointeur de la souris à ma guise je peux connaitre la position du pointeur avec "mouse_x_position(n),mais ne trouve pas le moyen de l'afficher 6 pixels plus loin par exemple Pour mon logiciel de détourage et incrustation je balaie manuellement la surface de l'objet que je veux reproduire avec un carre de 5 pixels par 5 qui se déplace au plus de 1 pixel à la fois en explorant des pixels qui l'ont déjà été Si la flèche se positionnait automatiquement juste à cote de la zone explorée ? | |
| | | sergeauze
Nombre de messages : 391 Age : 71 Localisation : Hautes Alpes France Date d'inscription : 09/01/2010
| Sujet: Re: POINTEUR INCREMENTAL Jeu 13 Mar 2014 - 19:16 | |
| Une ébauche du principe que je voudrais améliorer 1) balader le pointeur sur la zone rouge 2 le résultat chaque pixel pointé , donne un carre qui ne chevauche pas les autres C'est laborieux de couvrir toute la surface Il serait plus judicieux de ratisser plus large W pour quitter et la croix ( je suis gaucher) - Code:
-
left 0,5 top 0,0 width 0,886 height 0,892 caption 0,"Form 0" picture 1 left 1,10 top 1,11 width 1,80 height 1,100 hint 1,"picture 1"
dim xa,ya,x,y ,u ,z ,a,b picture 2 left 2,248 top 2,26 width 2,593 height 2,792 hint 2,"picture 2"
picture 3 left 3,12 top 3,189 width 3,182 height 3,164 hint 3,"picture 3" ' Ebauche du principe picture 4 left 4,14 top 4,381 width 4,185 height 4,157 hint 4,"picture 4"
color 1,255,0,0
2d_pen_width 1 repeat a=90 b=10 xa= mouse_x_position(1) ya= mouse_y_position(1)
' 2d_pen_color 255,0,0
2d_fill_color rnd (255),0,rnd (255) 2d_target_is 2 2d_rectangle xa*8+a,8*ya+b,xa*8+a+8,8*ya+b+8 2d_circle (xa*2),(1*ya*2),2 wait 60 display
until scancode = 87 : ' W
end Bonne fin de journee | |
| | | JL35
Nombre de messages : 7095 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: POINTEUR INCREMENTAL Jeu 13 Mar 2014 - 20:03 | |
| J'avoue que je ne vois pas très bien ce que tu cherches à faire, on dirait obtenir une image agrandie de la zone balayée dans le rectangle rouge (1 pixel -> 1 carré) ? Je ne vois pas le but ultime, mais s'il y a un problème, où est-il ? | |
| | | sergeauze
Nombre de messages : 391 Age : 71 Localisation : Hautes Alpes France Date d'inscription : 09/01/2010
| Sujet: Re: POINTEUR INCREMENTAL Jeu 13 Mar 2014 - 21:35 | |
| Le pb est de balayer la zone rouge avec un carré de c pixels de cote sans que 2 carrés consécutifs se chevauchent et reproduire de l'autre cote les pixels rencontres de manière autant organisée que que sur mon exemple Merci de ton attention | |
| | | JL35
Nombre de messages : 7095 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: POINTEUR INCREMENTAL Jeu 13 Mar 2014 - 22:21 | |
| Je ne comprends toujours pas... D'après ce que je vois, tu parcours la zone rouge pixel par pixel, à la souris, et tu reproduis le parcours d'abord multiplié par 2, à gauche (petits cercles), puis multiplié par 8 à droite (carrés de couleur aléatoire). Je ne sais pas ce que tu veux faire avec ça, mais où est le problème (s'il y a un problème, ce que je suppose) ? Les carrés ne peuvent pas se chevaucher puisqu'ils font 8 pixels de large et sont espacés de 8 pixels. | |
| | | Klaus
Nombre de messages : 12298 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: POINTEUR INCREMENTAL Ven 14 Mar 2014 - 0:27 | |
| @Sergeauze: croyant comprendre selon ton post initial que tu cherches une possibilité de positionner le curseur, je t'indique que KGF.dll contient la fonction adéquate: - Code:
-
res% = dll_call2("MousePosition",x%,y%) x%, y% sont les coordonnées de la form du point auquel le curseur sera positionné. | |
| | | sergeauze
Nombre de messages : 391 Age : 71 Localisation : Hautes Alpes France Date d'inscription : 09/01/2010
| Sujet: Re: POINTEUR INCREMENTAL Ven 14 Mar 2014 - 1:39 | |
| C'est ce que je cherche et que je vais utiliser Si 'est bien ce que je pense je vais pouvoir incrémenter mes déplacements du pointeur de la souris et construire mon outil de balayage de la surface,celle en rouge, sans chevauchement de pixels je déplaçais un pave de 6 par 6 pixels que l'on ne pouvait faire bouger dans tous les sens que d'un pixel à la fois C’était la seule et unique possibilité,Plus pratique de pouvoir se positionner en tenant compte de ses dimensions Merci Klaus et bonne nuit 13h15 ps: j'ai testé et j'en suis bluffé ! C'est un fonctionnalité que j'aimerais voir intégrer dans Panoramic Elle existait dans un ancien basic au début de l'apparition de la souris : on se déplaçait d'un carreau à l'autre et on pouvait choisir de combien à chaque nouvement Mais je parle d'un temps......bien lointain
| |
| | | sergeauze
Nombre de messages : 391 Age : 71 Localisation : Hautes Alpes France Date d'inscription : 09/01/2010
| Sujet: Re: POINTEUR INCREMENTAL Dim 16 Mar 2014 - 2:03 | |
| @ klaus je crois avoir compris l'utlisation de res% = dll_call2("MousePosition",x%,y%) Si je la place dans une boucle "repeat until x%= rnd(100) y%= rnd (100) ça fonctionne sans pb
Mais si j e fais la même chose et que je prend x%= mouse_x_postion(0) y%= mouse_y_position (0) ça ne fonctione pas correctement Non plus lorsque je pose x%= f%+g% | |
| | | Klaus
Nombre de messages : 12298 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: POINTEUR INCREMENTAL Dim 16 Mar 2014 - 9:01 | |
| - Citation :
- Mais si j e fais la même chose et que je prend
x%= mouse_x_postion(0) y%= mouse_y_position (0) ça ne fonctione pas correctement Les fonctions mouse_x_postion et mouse_y_postion retournent la position du curseur si le curseur est dans l'objet dont le numéro est donné en paramètre, Si le curseur est dans un autre objet, la valeur retournée pour l'objet passé en paramètre n'a pas de signification. Si donc ton curseur est, mettons dans un picture 17, la valeur de mouse_x_postion(0) n'a pas de signification, et seule la valeur de mouse_x_postion(17) est réelle. - Citation :
- Non plus lorsque je pose x%= f%+g%
Qu'est-ce que ces deux variables sont censées contenir ? Regarde ce petit code. Fais bouger le curseur sur le picture et en-dehors - tu constateras immédiatement ce qui se passe. Sors du programme par Echap: - Code:
-
dim s$ picture 1 : top 1,30 : left 1,30 repeat s$ = "Picture="+str$(mouse_x_position(1))+","+str$(mouse_y_position(1)) s$ = s$ + " Form="+str$(mouse_x_position(0))+","+str$(mouse_y_position(0)) caption 0,s$ pause 100 until scancode=27 end
| |
| | | sergeauze
Nombre de messages : 391 Age : 71 Localisation : Hautes Alpes France Date d'inscription : 09/01/2010
| Sujet: Re: POINTEUR INCREMENTAL Dim 16 Mar 2014 - 15:26 | |
| Salut Merci klaus j'ai compris le principe je perd mon latin sur ce code Cherchez l'erreur: le pointeur ,le cercle et le carré dans mon esprit devraient forcement empiéter l'un sur l'autre vu que je leur attribue un point en commun W pour quitter sur un stop - Code:
-
' alignez les
dim x%,y% ,res%, a%,b% width 0 ,1000 height 0,1000 label chargerKGF label compte ' ................................................ chargerKGF: print "sub charger_KGF()" dll_on "C:\Users\babou\Desktop\KGF.dll" timer 1 timer_interval 1,500 on_timer 1,compte end ' ............................................. compte:
x%= int( rnd (700) ) y%=int (rnd (700) )
' xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
res% = dll_call2("MousePosition",x%,y%) ' xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 2d_circle x%,y% ,15
for b%= x% to 10+x% step 1 for a%=y% to 10+y% step 1
2d_point a%,b% display next a% next b%
wait 500 cls
if scancode=87 then stop Entre le moment ou la trace le cercle et celui ou l'on entame la boucle les valeur s de x% et de y% ont change . Ce qui est normal.puisque la valeur est recalculée par rnd(x%) Faute d'inattention de ma part | |
| | | sergeauze
Nombre de messages : 391 Age : 71 Localisation : Hautes Alpes France Date d'inscription : 09/01/2010
| Sujet: Re: POINTEUR INCREMENTAL Dim 16 Mar 2014 - 16:56 | |
| Par contre pour ce cas la ,je ne trouve pas d'explication En balayant la surface on voit le probleme w pour quitter - Code:
-
' alignez les
dim x%,y% ,res%, a%,b% width 0 ,1000
height 0,1000 label chargerKGF label compte
chargerKGF: print "sub charger_KGF()" dll_on "C:\Users\babou\Desktop\KGF.dll"
timer 1 timer_interval 1,500 on_timer 1,compte end compte:
' xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
res% = dll_call2("MousePosition",x%,y%) ' xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx x%= mouse_x_position(0) y%=mouse_y_position(0) 2d_circle x%,y% ,15 print_locate 100,10 print x% ," ....",y%
for b%= x% to 20+x% step 1 for a%=y% to 20+y% step 1 print_locate 200,10 print x% ," ....",y% 2d_circle a%,b%,1
next a% next b% wait 250
if scancode=87 then stop avec un panorami a cesse de fontionner en prime | |
| | | sergeauze
Nombre de messages : 391 Age : 71 Localisation : Hautes Alpes France Date d'inscription : 09/01/2010
| Sujet: Re: POINTEUR INCREMENTAL Dim 16 Mar 2014 - 21:16 | |
| Cette piste étant une impasse Je vais me retourner vers la dll "GetMousePosition " ce que j'aurais du faire avant | |
| | | sergeauze
Nombre de messages : 391 Age : 71 Localisation : Hautes Alpes France Date d'inscription : 09/01/2010
| Sujet: Re: POINTEUR INCREMENTAL Lun 17 Mar 2014 - 11:23 | |
| Salut c’était la bonne solution et j'ai obtenu le résulta escompté Par contre je n'arrive pas à arrêter proprement mon programme J'obtiens très souvent des messages : Panoramic a cesse de fonctionner tentative d’écriture en mémoire par exemple | |
| | | Klaus
Nombre de messages : 12298 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: POINTEUR INCREMENTAL Lun 17 Mar 2014 - 11:46 | |
| Je n'ai toujours pas bien compris ce que tu voulais faire avec la souris. As-tu vu la fonction suivante dans KGF.dll: - Code:
-
res% = dll_call2("AbsoluteMousePosition",x%,y%) Elle donne la position absolue à l'écran, indépendemment d'une form, d'un objet etc, tel que c'est le cas pour - Code:
-
res% = dll_call2("MousePosition",x%,y%) Tout est documenté dans KGF.chm, section "Gestion de la souris". | |
| | | sergeauze
Nombre de messages : 391 Age : 71 Localisation : Hautes Alpes France Date d'inscription : 09/01/2010
| Sujet: Re: POINTEUR INCREMENTAL Lun 17 Mar 2014 - 13:34 | |
| @Klaus Ce sont ces 2 fonctions que jai utilise comme base de mon code Je vais publier un exemple pour illustrer ce que j'en fais
| |
| | | Klaus
Nombre de messages : 12298 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: POINTEUR INCREMENTAL Lun 17 Mar 2014 - 14:30 | |
| Car, voici l'astuce pour avoir les coordonnées actuelles de la souris par rapport à la form 0, indépendemment de l'objet dans lequel se trouve le curseur: - Code:
-
res% = dll_call2("GetAbsoluteMousePosition",adr(x%),adr(y%)) x% = x% - left(0) : y% = y% - top(0) Et là, tu n'as pluys de problème de passage de la souris sur un objet ou un autre... La même astuce peut s"appliquer pour trouver le curseur par rapport à un container placé dans la form 0. Supposons que le container ait le numéro 17: - Code:
-
res% = dll_call2("GetAbsoluteMousePosition",adr(x%),adr(y%)) x% = x% - left(0) - left(17) : y% = y% - top(0) - top(17) etc.
Dernière édition par Klaus le Lun 17 Mar 2014 - 17:14, édité 1 fois | |
| | | sergeauze
Nombre de messages : 391 Age : 71 Localisation : Hautes Alpes France Date d'inscription : 09/01/2010
| Sujet: Re: POINTEUR INCREMENTAL Lun 17 Mar 2014 - 15:54 | |
| @Klaus le code que je te propose d'examiner Il est assez gormand en ressources si on augmente la valeur "pinceau" Chez moi ça peut planter l'ordi - Code:
-
' alignez les
dim x%,y% , a%,b% , res%,hnd% ,a ,n% ,x,y ,pinceau% ' changer la valeur
pinceau% =18
width 0 ,1000 ' 2d_fill_color 0,125,12 2d_pen_color rnd(255),rnd(100),120 height 0,1000 label chargerKGF label getpos label situer chargerKGF: ' print "sub charger_KGF()" dll_on "C:\Users\babou\Desktop\KGF.dll" timer 1
timer_interval 1,600
on_timer 1,getpos end getpos: ' xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx hnd% = handle(0) res% = dll_call3("GetMousePosition",hnd%,adr(x%),adr(y%)) :' position curseur ' xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ' 2d_circle x%,y% ,7 print_locate 200,10 print x% ," ....",y% ' xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx situer: ' xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx x%=int(x%/pinceau%)*pinceau% : y% =int(y%/pinceau%)*pinceau% :' je repositionne le curseur res% = dll_call2("MousePosition",x%+a%,y%+b%): ' place le curseur for y=1 to pinceau% for x= 1 to pinceau% 2d_point x%+x,y%+y 2d_pen_color rnd(255),rnd(100),120 next x next y ' 2d_circle x%,y% +25,1 print_locate 100,10 print x% ," ....",y%
if scancode=87 then terminate if scancode=87 then dll_off | |
| | | sergeauze
Nombre de messages : 391 Age : 71 Localisation : Hautes Alpes France Date d'inscription : 09/01/2010
| Sujet: Re: POINTEUR INCREMENTAL Lun 17 Mar 2014 - 16:11 | |
| Merci pour ton astuce les application du code sont plus évidentes A chaque mouvement de la souris d'une amplitude qui dépasse la valeur du cote on se positionne en haut et à gauche du prochain au lieu de faire ça pixel par pixel | |
| | | Klaus
Nombre de messages : 12298 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: POINTEUR INCREMENTAL Lun 17 Mar 2014 - 17:22 | |
| Une petite remarque: il vaut mieux faire DLL_OFF avant de faire TEMINATE - comme ceci: - Code:
-
if scancode=87 dll_off terminate end_if
| |
| | | sergeauze
Nombre de messages : 391 Age : 71 Localisation : Hautes Alpes France Date d'inscription : 09/01/2010
| Sujet: Re: POINTEUR INCREMENTAL Mer 19 Mar 2014 - 14:02 | |
| salut je viens de tester un code simple qui emploie:"GetAbsoluteMousePosition" associe à print _locate pour lire la position de la souris à l’écran Les coordonnées affichées sont parfois fantaisistes ex :je me ballade dans la partie haute à gauche de l'écran et j'ai à l'affichage des valeurs du genre :
x=955 y= 6539 a qui la faute je vois 3 causes possibles Panoramic La dll Mon processeur qui s’embrouille et fait valoir ses droits à la retraite
Çà peut être gênant si c’est la valeur affichée qui es prise en compte dans des calculs | |
| | | Contenu sponsorisé
| Sujet: Re: POINTEUR INCREMENTAL | |
| |
| | | | POINTEUR INCREMENTAL | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |