Newsgroup: it.comp.lang.visual-basic
Titolo: [?]Valori limite nei metodi grafici

Cari Amici,
ho elaborato un programma didattico di grafica vettoriale con
visualizzazione prospettica usando il VB.
Tuttavia, ho un problema.
Per quanto abbia cercato nella documentazione in mio possesso, non sono
riuscito a capire il meccanismo del limite nel valore che si può assegnare
alle coordinate di un punto all'interno di una PictureBox.
E' noto che assegnando alle proprietà ScaleWidth e ScaleHeight dell'oggetto
in questione un certo valore, si può prescindere dalle dimensioni fisiche
Widht ed Height. In parole povere, si può disegnare con un fattore di scala.
Perciò, se, per esempio, assegno ad una PictureBox quadrata il valore di
ScaleWidth e ScaleHeight di 100, potrò disegnare all'interno di un perimetro
quadrato di lato 100, con l'origine del sistema di riferimento situata al
centro del quadrato.
Inoltre, i metodi grafici continuano a funzionare anche se uno dei punti
risulta situato al di fuori del limite fornito dall'utente; la cosa risulta
comodissima, ad esempio, per fare lo "zoom" cambiando semplicemente i
limiti.
Fin qui tutto evidente, ma i problemi nascono allorquando si forniscono le
coordinate di un punto che è molto al di fuori di questo perimetro. Usando
gli stessi limiti indicati prima, fornendo al semplice metodo Pset le
coordinate del punto di ascissa
10000 e ordinata 10000 si ottiene errore di overflow.
Qualcuno potrà obiettare a cosa possa servire fornire un punto del genere,
visto che non sarà mai visualizzato; il motivo è dato dal fatto che, ad
esempio, potrebbe essere il centro di un arco di circonferenza con un raggio
molto grande: come fare a tracciarlo?
Oppure potrebbe essere uno dei punti di un segmento molto lungo: come fare a
tracciare almeno l'inclinazione della porzione visibile?
In parte a questi problemi ho già dato una risposta (tramite On Error), ma,
per velocizzare i
calcoli, dovrei sapere con quali criteri VB delimita la zona, diciamo,
"franca" tra i limiti forniti dall'utente e quelli effettivi che non
inducono nell'errore di overflow.
Ho provato con metodi empirici basati su di una percentuale (se il punto
eccede un tot per cento oltre il limite imposto non può essere considerato),
ma, purtroppo, sembra che cambiando limiti questo metodo non funzioni,
sembra, cioè, non esserci una relazione proporzionale.
Qualcuno di voi ha mai incontrato un problema simile?
Ciao!
============================================
                      CYBER Hardware & Software
                         di Albani Ettore Massimo
                           Via Scapacchiò, 48/B
              35030 Selvazzano Dentro (PD) - Italy
                         Tel./Fax: 
(+39) 049-638681
 
http://www.protec.it/cyber
                         E.mail: 
cy...@protec.it
============================================

molto grande: come fare a tracciarlo?
L'overfow viene senza dubbio generato da qualche funzione interna
usata per il disegno, per cui non credo che tu riesca a determinare un
metodo funzionante per delimitare la "zona franca" nella quale puoi
ancora disegnare, anche se il disegno non viene visualizzato.
Io userei comunque il controllo di errore...
Nel caso di segmenti potresti, se viene generato l'errore, calcolare
l'inclinazione, e l'equazione della retta, poi cercare l'intersezione
col bordo del quadrato e disegnare così la parte visibile.
Se entrambi gli estremi sono fuori dal quadrato, i calcoli si
complicano, ma credo siano fattibili
ErreBi