Newsgroup: it.comp.lang.visual-basic
Titolo: [.Net] Ottenere raster da linee

Stavo cercando di risolvere un problema che probabilmente ho gia' 
risolto 20 anni fa ma che adesso probabilmente e' gestito da qualche API.
Sto lavorando con il Compact Framework.
Ho una serie di coordinate bidimensionali (che rappresentano una firma).
Con queste coordinate traccio delle linee le quali vanno a disegnare la 
firma. Il "disegno" sino ad ora veniva fatto su una stampante con una 
libreria apposita.
Adesso mi e' stato chiesto di usare un linguaggio specifico della 
stampante e, per motivi di velocita' di stampa, l'unica istruzione che 
posso usare e' una cosa del tipo:
disegna_immagine 0f123424...
dove la sequenza esadecimale indica quali bit sono "accesi o spenti".
Speravo di poter usare una qualche istruzione (di .net) tipo drawline 
per tracciare le mie linee in un qualche bitmap virtuale e poi 
recuperare il raster map di questo bitmap usando getpixel ma non 
funziona (o non ho scritto la giusta sequenza di istruzioni).
Avete qualche indicazione (se sono riuscito a spiegare cosa devo fare)?
grazie
	maxx

 ha scritto nel messaggio 
news:YTvSg.212$pp1...@tornado.fastwebnet.it...

Non ho capito: tu vuoi che la firma fatta su palmare venga stampata?
E qual è il collegamento tra il pocketpc e la stampante?
Ciao
I choose Polesoft Lockspam to fight spam, and you?
http://www.polesoft.com/refer.html
 

 scritto la giusta sequenza di istruzioni).
Questo dovrebbe funzionare benone. Perchè non ti funziona?
Basta prendere una picture non visibile disegnarci sopra le tue linee e 
recuperare i valori pixel per pixel.
Ciao, Emiliano.

 Non ho capito: tu vuoi che la firma fatta su palmare venga stampata?
Non esattamente:
devo inviare alla stampante, usando un comando della stampante, il 
raster della firma.
Il comando della stampante vuole come argomento un elenco di bytes i cui 
bit indicano se il punto e' "acceso" o "spento".
Io non il bitmap della firma ma le coordinate dei punti che la 
costituiscono, ovvero qualcosa traducibile con:
vai dal punto x al punto y
vai dal punto y al punto z
vai dal punto k al punto m
Devo quindi prima "disegnare" la firma su un bitmap e poi trasmettere il 
bitmap alla stampante.
grazie
      maxx


Non ho scritto che il programma e' privo di form, si tratta di una 
specie di "servizio".
Ho provato ad usare questa tecnica:
'creo un bitmap (virtuale) con
dim bm as Bitmap
'creo un oggetto graphics da questo bitmap con
g = Graphics.FromBitmap(bm)
g.drawline(penna,x,y)
A questo punto pero' non so come fare a rispedire al bitmap cio' che 
graphics ha disegnato, in modo da usare getpixel per costruire il raster 
di byte da inviare alla stampante (vedi l'altra mia risposta).
grazie
	maxx

 di byte da inviare alla stampante (vedi l'altra mia risposta).
Io continuo a non capire dove sta il problema.
Nel senso che proprio non ho capito quale passaggio ti dia problemi.
Forse che vuoi ottenere una Bitmap da un Graphics?
Allora ottieni il Graphics su cui vuoi disegnare dalla Image che fa da 
"foglio" con Graphics.FromImage(image1).
Ciao 

 
I miei dati di partenza sono le coordinate dei punti di inizio e fine 
delle linee che costituiscono una firma. Per semplificare supponiamo che 
la firma sia una x. I dati che ho sono quindi:
(0,100) - (100,0)
(0,0) - (100,100)
Se avessi a disposizione qualcosa su cui disegnare utilizzerei Drawline.
Alla stampante pero' non posso passare le coordinate dei punti di inizio 
e fine linea e fare tracciare a lei le linee. Devo invece creare io una 
sequenza di byte che rappresenta la firma come bitmap:
80 00 00 00 00 01  40 00 00 00 00 02 ...
Per passare dalle coordinate di inizio e fine delle linee al bitmap devo 
usare qualche funzione che lo faccia per me.
Al momento ho risolto usando un algoritmo che fa questa operazione 
(Bresenham).
Speravo che fosse possibile farlo usando qualcuna delle funzioni 
grafiche di dotnet anche quando non si lavora con form e schermo.
ciao
	maxx

 di dotnet anche quando non si lavora con form e schermo.
Boh, continuo a non capire :)
Se usi un formato proprietario della stampante come fa dotnet ad avere 
qualcosa di già fatto?
Se invece la stampante ha i suoi driver puoi tranquillamente usare un 
PrintDocument.
Ciao 

 
Non e' un problema di stampante.
Supponi di dover creare un disegno ma di non volerlo visualizzare 
immediatamente (ad esempio su un form). Vedi buffering...
Tracci poi delle linee.
Supponi anche di voler "analizzare" il disegno. Vuoi sapere se il punto 
(20,55) e' colorato. Come fai?
ciao
	maxx