Newsgroup: it.comp.lang.visual-basic
Titolo: procedure di stampa

salve a tutti.
stavo studiando tutta la stampante(meccanica, elettronica, driver) con le
prime due più o meno ci sto. ma con il driver no.
come avviene una stampa? come si comporta un driver e come entra in
funzione?
quali sono i vari processi/passaggi per arrivare alla stampa di una
immagine/testo?
grazie a tutti



Ma con il VB c'entra?
Comunque... proviamo
Le stampanti non fanno altro che scrivere 'striscie' di inchiostro di vari
colori sulla carta in modo che corrispondano a sequenze di punti tali da formare
un immagine o un testo.
Naturalmente l'immagine viene prima costruita in memoria ram, questo processo si
chiama rasterizzazione:
http://it.wikipedia.org/wiki/Rasterizzazione
Quando usi i metodi Line o Circle dell'oggetto Printer non fai altro che
scrivere dei bits in ram secondo un algoritmo di rasterizzazione di una linea o
di un cerchio:
http://it.wikipedia.org/wiki/Algoritmo_di_rasterizzazione_di_linea
Infine il driver non fa altro che prendere una sequenza di bytes (o pixels) già
rasterizzati dalla ram in modo che alla stampante arrivino i punti dell'immagine
insieme ai comandi giusti (che variano a seconda del tipo di stampante) per una
corretta rappresentazione su carta.
Sperando di essere stato comprensibile in poche righe,
--
ciao
  Stefano

 funzione?
Forse su it.hobby.elettronica e it.hobby.elettronica.digitale saresti più 
IT.
Comunque, il driver non è altro che il set di API per comunicare con una 
periferica generica.
Ovvero, dice al sistema operativo cosa passare e come passare i dati.
Quindi ad esempio un driver di una stampante immaginaria può avere un metodo 
per stampare a cui passare:
-Formato carta
-Margini
-Numero pagine
-Eventuali impostazioni secondarie ("pesantezza" della goccia di inchiostro, 
luminosità, contrasto ecc...)
e infine:
-Array di pagine:
    (pagina 1):
            matrice di byte con le informazioni da stampare
    (pagina 2):
            matrice di byte con le informazioni da stampare
    (pagina 3):
            <fine>
Quindi una operazione di stampa può essere così:
inizio
1. Inserisci nello spool di stampa l' operazione da eseguire
2. Avvia l' operazione
3. Invia i parametri alla stampante
4. La stampante memorizza i parametri nel buffer
5. Invia alla stampante il comando di inzio stampa
6. Carica il buffer di dati della stampante con i dati della pagina 1
7. Attendi che la pagina sia stata stampata
8. Ricarica il buffer con i dati della pagina 2
9. Attendi che la pagina sia stata stampata
10. Invia il comando di fine stampa
11. Pulisci lo spool di stampa
12. Libera le risorse per la stampante
fine
Bye,
-- 
Carmine ( 
pikachu...@gmail.com
 (Togli la scritta NOSPAM) )
Webmaster di The Total Site 4 : 
http://www.thetotalsite.it
My Blog: 
http://blog.thetotalsite.it
MariokartDS Codice Amico: 532639027909 - CarmineC in MarioKartDS
"Un problema non è un problema se può essere risolto" 

 corretta rappresentazione su carta.
Vale la pena di aggiungere che quanto dici è più o meno valido per le
stampanti a getto d'inchiostro o quelle a matrice di punti (e sotto windows),
ma non per le stampanti PCL o Postscript.
in questi casi (e se il programma è scritto in modo corretto) il driver
invia dei comandi alla stampante simili a quelli utilizzati per lo schermo,
e la stampante ha un suo controller interno, con un suo rendering engine,
che crea una bitmap ottimizzata per la propria risoluzione e le proprie
caratteristiche.
Il Postscript e il PCL sono dei veri e propri linguaggi di programmazione,
orientati specificatamente alla grafica; contengono tutte le primitive
necessarie per scrivere testo, bitmap o vettoriali.
Un esempio estremamente semplice di PS scritto al volo:
100 100 moveto
/Helvetica-Bold findfont 24 scalefont setfont
(it.comp.lang.visual-basic) show
showpage
Questo, inviato ad una stampante Postscript, fa stampare il nome di
questo NG alle coordinate 100, 100 partendo da sinistra in basso,
in carattere helvetica grassetto da 24 punti.
Bye, G. 

 ha scritto nel
messaggio news:e2l0o7$ejk$1...@area.cu.mi.it...


 QuantitàInchiostro, AvanzamentoCarta
Ehhhh... dovresti studiarti i vari driver.
Ma perchè tutto questo incasinamento?
L' oggetto Printer ti sta antipatico?


 ha scritto nel
messaggio news:e2o8v7$p0l$1...@area.cu.mi.it...


 sto cercando di vedere se č possibile realizzarla.
Oeh! Addirittura...
Meglio passare a it.hobby.elettronica allora.
Bye,
-- 
Carmine ( 
pikachu...@gmail.com
 (Togli la scritta NOSPAM) )
Webmaster di The Total Site 4 : 
http://www.thetotalsite.it
My Blog: 
http://blog.thetotalsite.it
MariokartDS Codice Amico: 532639027909 - CarmineC in MarioKartDS
"Un problema non č un problema se puň essere risolto" 

 non credo che mi aiutino sul sw
Quella č l' ultima parte...
E cmq devi scriverti un device driver... sta roba si fa in C o in asm... non 
in .net o vb6.
Bye,
-- 
Carmine ( 
pikachu...@gmail.com
 (Togli la scritta NOSPAM) )
Webmaster di The Total Site 4 : 
http://www.thetotalsite.it
My Blog: 
http://blog.thetotalsite.it
MariokartDS Codice Amico: 532639027909 - CarmineC in MarioKartDS
"Un problema non č un problema se puņ essere risolto"
XML: Il futuro dell' informatica 

 "Un problema non è un problema se può essere risolto"
