Newsgroup: it.comp.lang.visual-basic
Titolo: Unità di misura

Spero di non essere OT. Ho scritto all'interno di un programma in VC++ una
parte di codice che disegna sulla finestra una linea (attraverso la classe
CPen). Questa però accetta solamente valori in pixel interi. Purtroppo avrei
bisogno di una unità di misura più precisa, esprimendo la misura con un
valore più alto. Ciò per via di calcoli che devo fare successivamente. Ciò
che sto tentando di fare lo avevo già fatto nello stesso modo in Visual
Basic, ma qui non avevo riscontrato tali problemi in quanto le misure le
avevo espresse in twips.
Il quesito a cui spero qualcuno possa rispondere è questo, qual'è
l'algoritmo con cui Visual Basic converte i twips in pixels? Ho già provato
a postare tale domanda su it.comp.programmare.win32 ma mi è stato
consigliato di chiedere a voi.
Spero di aver spiegato decentemente il problema.
Grazie a tutti.
Luca Carlon

consigliato di chiedere a voi.
La fama di iclvb ha varcato le colonne d' Ercole ;-)
-- 
hth, hal

 l'algoritmo con cui Visual Basic converte i twips in pixels?
Consiglio: lascia perdere i Twips!
Sono un'inutile perdita di tempo macchina e di travasi di bile.
Anche in VB, setta il tuo ScaleMode in pixel e usa quelli.
I Twips alla fine altro non sono che i valori in pixel moltiplicati per 12 o
15 a seconda dei font usati.
Se proprio ti servono valori più ampi usa dei Double e poi scalali in pixel.
Ciao
------------------------- SiDB Simple DataBase engine ----
------------------------- adParser Expression evaluator --
 
http://space.virgilio.it/zntf...@tin.it/
----------------------------------------------------------

 sono quelli che poi fisicamente accendi e spegni sul monitor)
Beh, grazie per le risposte, sia a te che a Zanna.
Quello che tu dici me lo hanno detto anche altri, ossia che alla fine sempre
pixel diventano, ma io non l'ho ancora capito come. Se tra un certo punto ed
un altro ci sono 300 pixels, ma ci sono 5000 twips (sparo ad occhio), non
vedo come io possa esprimere una misura in twips e poi il sistema possa
convertirla in pixels senza perdere la precisione, dato che non si possono
esprimere pixels con decimali. Boh. Se esprimo una misura in cm e dico che
ci sono 99cm, non posso esprimerla in metri senza decimali, o dico 1m o 0m.
E' un dubbio stupido? Cmq volevo dirvi che ho risolto il problema senza
algoritmi particolari, sono stato tutta la mattina a cercare sulle msdn
online ed ho trovato la soluzione, cmq non vado oltre visto che non si parla
più di vb.
Vi ringrazio cmq delle risposte e scusate ancora il parziale OT.
Luca Carlon

online ed ho trovato la soluzione, 
Che ti guardi bene dal postare, eh ?
-- 
ciao, hal

 Luca Carlon ha scritto:

Essendo fortemente OT non lo avevo postato, ma sono felicissimo di
postarvelo, questo č il pezzettino di codice che ho postato anche su icpw:
 // Build the device context
 CClientDC dc(this);
 // Set the new mapping mode
 dc.SetMapMode(MM_TWIPS);
 // Create the pens
 CPen lightPen(PS_SOLID, 10, RGB(240, 240, 240));
 CPen darkPen(PS_SOLID, 10, RGB(160, 120, 120));
 // Select the light pen
 dc.SelectObject(&lightPen);
 // Draw the borders
 dc.MoveTo(360, -3800);
 dc.LineTo(4500, -3800);
la parte di cui stavamo parlando č dc.SetMapMode(MM_TWIPS);
Dopo quell'istruzione tutte le misure sono scritte in twips.
Ciao e grazie.
Luca Carlon

 decimali, o dico 1m o 0m. E' un dubbio stupido? 
Come ti dicevo i twips sono solo misure fasulle in tutti i sensi.
E' come dire che una cippa equivale a 1/12 di cm.
Il tuo metro è di 100 cm o di 8.333 cippe.
E' la stessa cosa ma molto più contorta.
La boiata in realtà è questa: non puoi avere vie di mezzo con i twips.
Cioè puoi convertire tranquillamente un pixel in twips (mettiamo 1px=12tw), 
ma non puoi fare l'inverso su ad. es. 7twips senza perdere in precisione. 
Proprio come dici tu.
Dato quindi che poi chi comanda è il video tanto vale ragionare su qualcosa 
che si può vedere che risulta quindi più semplice da gestire a livello 
mentale.
Ciao

Ciao e grazie.
Grazie a te.
-- 
ciao, hal

 Ciao
Ciao a te.
Luca Carlon

 integer).
E per questo usi un sistema di numerazione a base 12? :)
Non mi pare il caso... piuttosto usa dei double per memorizzarti i valori e
poi li scali al momento di mandarli a video.
Ciao