Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    142

    Gestione "fine" di immagini in GUI

    Buonasera,

    scusatemi per il pessimo titolo del post, spero che qualcuno riesca ugualmente a darmi un aiuto.

    Ho scritto la GUI di un programmino. Tale GUI mostra in una finestra un oggetto circolare che si muove, e l'oggetto è preso da un immagine con il metodo ImageIO.read; il tutto è in 2 dimensioni.

    Per realizzare il movimento dell'oggetto ho salvato nei suoi campi un vettore di coordinate [x y]. Quando devo realizzare il movimento di un passo in orizzontale incremento la x di 1 (pixel) e chiamo il repaint. Analogamente per un movimento in verticale. In tal modo la lunghezza di un passo è 1 pixel.

    Vorrei però poter spostare l'oggetto anche in altre direzioni. Ma qui ho incontrato le prime difficoltà. Infatti se volessi muoverlo a 45 gradi, per logica dovrei incrementare x=x+1 ed y=y+1. Ma in tal modo il passo non è di lunghezza 1, bensì sqrt(2)>1.

    Il tutto è dovuto al fatto che non mi pare si possano specificare sottomultipli del pixel nelle coordinate. Come si può ottenere una gestione fine delle coordinate?

    Grazie, ciao
    Pete
    <esistono cose che non esistono>

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Sinceramente non ho capito perchè tu ti faccia determinati problemi.
    Credo che tu ti stia complicando inutilmente la vita.
    Un monitor è solo una griglia di punti allineati (indipendentemente dalla risoluzione), quindi uno spostamento in diagonale è effettivamente un incremento orizzontale e verticale di 1 punto. Dimenticati la matematica continua, lascia perdere le radici quadrate... con le GUI non hanno nulla a che vedere... ma forse non ho capito bene quale sia il tuo problema.

    Quello che ti posso assicurare è che non puoi disegnare frazioni di pixel. Un pixel può essere acceso o spento... l'unica variante è il colore.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    142
    Il motivo è che sto facendo un software di simulazione, e vorrei che la simulazione fosse il più possibile fedele. Tieni presente che se voglio fare un movimento ad un angolo ancora minore, per esempio 22.5 gradi, dovrei fare x+=2 e y+=1, ed in questo caso l'errore è ancora più grande ( sqrt(5) ).

    Ciao

    Pete
    <esistono cose che non esistono>

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 © 2025 vBulletin Solutions, Inc. All rights reserved.