Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    95

    [C++] individuare una cella su una tabella attraverso le coordinate dello schermo

    Sto programmando in c++. Praticamente ho creato sullo schermo, usando la libreria SDL, una tabella con 11 colonne e 12 righe. Ogni cella ha una larghezza di 113 pixel ed una altezza di 65 pixel, dovrei creare un algoritmo che mi permetta di individuare il numero di cella (il numero di cella parte da zero ed aumenta di uno per ogni nuova cella, proseguendo in orizzontale, terminata la riga, continua ad aumentare, incrementando di uno, nella riga successiva) attraverso l'indicazione delle coordinate (x,y) che indicano un punto preciso sullo schermo. In pratica bisogna individuare se questo punto si trova dentro ad una cella ed in quale cella si trova.
    Se qualcuno mi può aiutare, lo ringrazio in anticipo.

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Devi semplicemente fare qualche divisione ... x per il massimo numero di pixel in orizzontale e y per il massimo numero di pixel verticali ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    59
    Non so se ho capito bene quello che vuoi fare...

    Però per individuare le celle io farei così:

    tu sai che ogni cella è larga 113 ed è alta 65, la prima cella della prima riga avrà coordinate
    (0, 0) la seconda (0, 113) e via dicendo, in definitiva se vuoi trovare la cella collocata
    all' i-esima riga e alla j-esima colonna non devi fare altro che ((i-1)*113, (j-1)*65)

    spero di essere stato chiaro e di aver capito il tuo problema...

    EDIT
    Oregon scusa, probabilmente hai postato mentre io stavo scrivendo

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    95
    Ma io non voglio trovare la cella collocata alla riga i e alla colonna j, voglio individuare la cella in base un punto preciso sullo schermo. Cioè se le coordinate che indicano un punto qualsiasi sullo schermo(x,y) si trovano all'interno di una delle celle, voglio sapere quale cella è.
    Cioè in base alle coordinate di un punto qualsiasi, voglio avere le coordinate del punto dove la cella che lo contiene inizia a disegnarsi (cioè le coordinate dell'estremo punto in alto a sinistra della cella).
    In base alle coordinate del punto di origine della cella, posso risalire al numero di cella facilmente, perche ho un vector contenente puntatori ad oggetti di tipo Cell. Gli oggetti di tipo Cell hanno membri variabili di tipo int (x ed y) che corrispondono alle coordinate dei vari punti di origine delle celle.
    Quindi il problema è ottenere le coordinate punto di origine delle celle, avendo a disposizione le coordinate di un punto qualsiasi sullo schermo.
    Per essere ancora più chiaro, il problema viene a porsi quando deve individuare i movimenti del mouse, devo capire in quale cella si trova.

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Hai letto la mia risposta?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    95
    Faccio un un esempio, ho aperto un programma di grafica contenente un modello della stessa tabella. Se io mi porto con il mouse su un punto qualsiasi della quarta cella della prima riga, cioè qulla che dovrebbe avere come numero 3 (perchè la prima cella della prima riga dovrebbe avere come numero 0) il programma mi dà le coordinate del punto (401,59). Il punto di origine della quarta cella è 339,0 (cioè la x è pari a 113pixel*3).
    Come faccio ad ottenere questo punto di origine o comunque il numero della cella, conoscendo soltanto le coordinate 401,59 e la struttura della tabella (cioè 12 righe *11 colonne) e le misure delle celle, cioè 113X65?
    Oregon, mi dici di dividere, ma se faccio 1143/401 ottengo 2,85 e se faccio 780/59 ottengo 13,22. Come possono questi numeri aiutarmi?

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Dividi 401 per 113 ... = 3,54 e prendi la parte intera ... 3 ... per individuare la colonna.

    In maniera simile per la riga
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    59
    mhh non mi sembra un problema troppo complesso, ci sono diversi modi di risolverlo.

    a me ad esempio viene in mente di fare così (probabilmente ci potranno essere anche metodi migliori):

    Prendiamo il punto che prima hai usato (401, 59) fai 401 / 113 e hai come risultato
    3.(qualcosa) poi fai lo stesso per 59 ottenendo come risultato 0.(qualcosa) ora dei due numeri prendi solo la parte intera e hai come risultato che la cella si trova alla riga 3 colonna 0
    se vuoi avere proprio le coordinate della cella devi moltiplicare 3*113 e 0*64...

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    95
    Originariamente inviato da oregon
    Dividi 401 per 113 ... = 3,54 e prendi la parte intera ... 3 ... per individuare la colonna.

    In maniera simile per la riga
    Finalmente ho capito, grazie per per avermi aiutato!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.