Mousedown

Résolu
tonyledragon Messages postés 173 Date d'inscription lundi 2 mai 2011 Statut Membre Dernière intervention 13 décembre 2012 - 8 janv. 2012 à 17:26
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 11 janv. 2012 à 07:13
Salut,voila j'ai un problème j’affiche une image dans le form de mon projet avec mousdown j'aimerais que quand on lcique a tel endroit de cette image sa face tel chose,Le probleme et que qand on a x et y exemple je clique une fois pour avoir les cordonnée x 4524 et y 6060 bref je bouge a quelque centimettre je me retrouve avec d'autre cordonnée j'aimerais savoir si c'est pas possible d'avoir d'est cordonnée moins grande et avec des sorte de grille plus grosse en bref au lui d'avoir 4524 carreaux il y a na 32 carreaux mais plus gros ?

24 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
9 janv. 2012 à 07:54
ouvre un nouveau projet

mets ce code dans le Form1

Option Explicit

Private Sub Form_Load()
Dim X As Long
Dim Y As Long
    '# On donne a la form la dimension de 800x600 pixels
    ScaleMode = vbTwips
    Width = ScaleX(800, vbPixels, vbTwips)
    Height = ScaleY(600, vbPixels, vbTwips)
    
    '# Ce 800x600 est la dimension de la Form toute entière, par uniquement celle de
    '# la zone cliente. Il faut donc prendre en compte cette différence (dimensions
    '# des bordures de la Form et de la barre de titres). ScaleWidth/ScaleHeight est la
    '# taille de cette zone cliente
    Width = Width + Width - ScaleWidth
    Height = Height + Height - ScaleHeight
    
    '# On souhaite un quadrillage personnalisé...
    ScaleWidth = 20
    ScaleHeight = 15
    
    '# On dessine ledit quadrillage
    Me.AutoRedraw = True
    For Y = 1 To ScaleHeight
        Line (0, Y)-(ScaleWidth, Y), vbBlack
    Next Y
    For X = 1 To ScaleWidth
        Line (X, 0)-(X, ScaleHeight), vbBlack
    Next X
    Set Me.Picture = Me.Image
    Me.AutoRedraw = True
End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Static prevX As Long
Static prevY As Long
    '# Les coordonnées 'brutes' suivies de l'indice de la case survollée
    Me.Caption = X & " ; " & Y & "        " & Fix(X) & " ; " & Fix(Y)
    X = Fix(X)
    Y = Fix(Y)
    
    '# Ce test permet d'optimiser un peu la chose, ne redessinant que si nécessaire...
    If prevX <> X Or prevY <> Y Then
        prevX = X
        prevY = Y

        '# On mets en rouge la case survollée, si elle a changé
        Cls
        Line (X, Y)-(X + 1, Y + 1), vbRed, BF
        Line (X, Y)-(X + 1, Y + 1), vbBlack, B
    End If
End Sub



testes

et repiques les idées

c'est ce qu'a tenté de te faire comprendre ucfoutu, mais tu n'est pas très attentif apparemment

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
8 janv. 2012 à 17:42
Bonjour,

Tes explications ne sont pas vraiment claires.

Il est vraisemblable (probable) que tu aies à t'intéresser de près (ton aide VB6) à ,la propriété ScaleMode, ScaleWidth et ScaleHeight ainsi qu'aux fonctions Scalex, Scaley et TwipsPerPixelx et TwipsperPixely.

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
tonyledragon Messages postés 173 Date d'inscription lundi 2 mai 2011 Statut Membre Dernière intervention 13 décembre 2012 1
8 janv. 2012 à 17:50
Désole mais je sais pas trop m'exprimer correctement sur le probleme je vasi faire un exemple peut etre sa sera plus claire :

1 -
Tu a donc mousedown quand je clique deux fois un au dessu l'autre maffiche une fois
1552 et la deuxiemen fois 1780

sa c'est le probleme

2 -
Tu a donc mousedown quand je clique deux fois un au dessu l'autre maffiche une fois
25 premier fois
25 deuxieme fois
en bref que les carreaux soit plus grand que quand je selectionneavec un click quelque chose que sa m'affiche les bonne cordonnée donc le code ce lance

voici une image pour être plus claire
[img]http://img192.imageshack.us/img192/6896/sanstitrexz.png[:img]
Voila a droite le probleme
a gauche la solution possible
0
tonyledragon Messages postés 173 Date d'inscription lundi 2 mai 2011 Statut Membre Dernière intervention 13 décembre 2012 1
8 janv. 2012 à 17:51
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
8 janv. 2012 à 17:54
1) dis-nous quel est le Scalemode en cours
2) montre ton code


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
tonyledragon Messages postés 173 Date d'inscription lundi 2 mai 2011 Statut Membre Dernière intervention 13 décembre 2012 1
8 janv. 2012 à 17:58
Justement j'ai aucun code mon but la et simplement de créer un codee pour agrandire les case du mousedown
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
8 janv. 2012 à 18:01
C'est alors incompréhensible pour moi (ce que tu cherches à faire).
Et ce d'autant que tu dis qu'il s'agit d'un contrôle image.
Désolé.


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
tonyledragon Messages postés 173 Date d'inscription lundi 2 mai 2011 Statut Membre Dernière intervention 13 décembre 2012 1
8 janv. 2012 à 18:06
Bon je vasi ressayer j'ai regarde le scalemode sa corespond presque a se que je veux masi c'ets pas exactement sa je vais ressayer de m'expliquer plus correctement

en bref je chercher a faire une sorte de grille avec chacun leur numero respectif x et y

en bref
nous avons la case y1 x1 mais cette case vaux de 0 a 1024x et de 0 a 2455 y tu voie se que je veux dire

en bref au lieu me donnée les cordonnée de 0 a 1000 il me donne directement ma case x1 et y 1
c'est un sorte de scalemode mais en plus grand c'est un sorte de tableaux 32/32
et que quand on clique dans un case sa donne un chiffre de 1 a 32
pas un chiffre de 1 a 70
Car le scalemode change juste la valeur pixel pouce etc
moi je cherche pas a changer sa mais a dire en bref
exemple en pixel
ma case X 1 Y 1 = pixel 0 a 152
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
8 janv. 2012 à 18:12
Salut

Oui, les x et y changent à cause de la précision de du pointage.
Alors "sa c'est le probleme"
Quel résultat voudrais-tu voir ?
Tu parles de "coordonnées moins grandes", on dira moins sensible : ucfoutu t'a donné la solution avec ScaleMode.

Pour au point n° 2 de ta deuxième explication, c'est du charabia, cela ne veut rien dire.
Que ça t'affiche deux fois de suite '25' alors que tes x et y sont des chiffres bien plus grands. Comment passe t-on de l'un à l'autre ?

Des carreaux : enfin, tu parles d'une grille. Il faut attendre la fin pour savoir de quoi tu parles !
ScaleMode est, là aussi, la meilleure solution.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
8 janv. 2012 à 18:14
Je ne sais pas ce que tu appelles des "cases", mais commence à me demander si ru ne veux pas tout simplement parler des déplacements faits à l'aide de la souris pour positionner un contrôle (quel que soit ce contrôle)en IDE
.
Si c'est cela : non, VB ne peut "affiner" ces déplacements à l'aide de la souris, mais tu peux le faire (affiner) à l'aide des propriétés Left et Top, dans la fenêtre des propriétés.


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
tonyledragon Messages postés 173 Date d'inscription lundi 2 mai 2011 Statut Membre Dernière intervention 13 décembre 2012 1
8 janv. 2012 à 18:14
salut j'ai trouve sa je pense que sa pourrez corespondre car j'essaye de chercher un code pour faire mon systeme voici le code
 nX = (X / imgBoard.Width) * 10
    nY = (Y / imgBoard.Height) * 10
0
tonyledragon Messages postés 173 Date d'inscription lundi 2 mai 2011 Statut Membre Dernière intervention 13 décembre 2012 1
8 janv. 2012 à 18:17
Désoler j'avez pas vue vos message bref voila donc vous avez comprit le probleme donc la resolution mon probleme j'aimerais que les x et y soit plus grand que par exemple 10 petit carreaux movedown donne X1 Y 1
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
8 janv. 2012 à 18:20
Totalement incompréhensible (je dois avoir trop vieilli en dépit de mes efforts pour rester jeune).
J'abdique donc tant que le vocabulaire utilisé restera ce qu'il est.



____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
tonyledragon Messages postés 173 Date d'inscription lundi 2 mai 2011 Statut Membre Dernière intervention 13 décembre 2012 1
8 janv. 2012 à 18:23
Non mais c'est moi qui et trop c.. pour explique correctement
Bref scalemode en pixel c'est deja mieux ce je veux en bref c'est créer une sorte de grille par dessus et que une case de cette grille et = a environ 10 pixel
Donc on va dire un exemple
je clique sur un personnage ma grille affichera X 10 Y 10 en bref en pixel normal sa donnerais un chiffre entre 100 et 90
0
tonyledragon Messages postés 173 Date d'inscription lundi 2 mai 2011 Statut Membre Dernière intervention 13 décembre 2012 1
8 janv. 2012 à 18:28
Bon voila je ressaye encore je perd pas espoir donc 1 pixel egal le carre rouge(cest un exemple)
Moi ce que j'aimerais c'est avoir donc en bref comme le carrée vert donc exemple 32 pixel dans 1 carre vert qu'il egal donc X 1 donc une grille agrandit ^^
Bref j'aimerais agrandir les zone pour quelle soit plus facile par exemple le dragonnet noir en bas j'aimerais que si je clique dessu j'ai pas 45 fois des nombre de pixel different qu'il s'affiche jaimerais qu'il affiche juste carre du dragonnet noir X1 y 3 c'est un exemple
0
tonyledragon Messages postés 173 Date d'inscription lundi 2 mai 2011 Statut Membre Dernière intervention 13 décembre 2012 1
8 janv. 2012 à 18:30
En bref le carre vert quand je clique dessus il me dira les cordonnée X 25 et Y 15 dans toute la zone du carrée vert que le carrer rouge et si petit que si je bouge un peut a gauche ou droit il me donnera jamais la meme valeur
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
8 janv. 2012 à 18:30
Ecoute (dernière tentative)

si en ide : déjà dit
si en run : Scalemode, scalex, scaley et éventuellement twipsperpixelsx et twipsperpixelsy seront à utiliser. J'ignore ce que sont "grille" et "carreaux"
Bonne chance.

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
tonyledragon Messages postés 173 Date d'inscription lundi 2 mai 2011 Statut Membre Dernière intervention 13 décembre 2012 1
8 janv. 2012 à 18:43
J'ai trouve
DrawWidth = Val(txtEpaisseur.Text)

ceci marche sa me permet d'avoir plusieur pixel selectionnée bref merci m'avoir aider je sais je suis dur a comprendre
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
8 janv. 2012 à 19:44
Tu as "trouvé" ...
Mais j'ignore comment tu as pu faire (c'est vraiment un mystère) le lien entre la propriété Drawwidth et le déplacement d'un contrôle image.
Une seule explication possible : le mystère a ses raisons que la raison ne connaît pas. A moins que, depuis le tout début, tu n'aies cherché à exprimer autre chose que ce que tu as exprimé !
Mais si tu as "trouvé" (quoi en fait ?), bravo.



____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
tonyledragon Messages postés 173 Date d'inscription lundi 2 mai 2011 Statut Membre Dernière intervention 13 décembre 2012 1
8 janv. 2012 à 20:22
Fause joie,en faite c'est avec un systelme de dessin j'ai trouves c'ets commande mais bon sa marche pas mais j'ai trouvé un autre système pour faire fonctionné tout sa

J'ai mit la X le plus loin du personnage au plus pré de lui pareil pour y donc quand tu clique par la zone délimité ben sa marche :p
0
Rejoignez-nous