Newsgroup: it.comp.lang.visual-basic
Titolo: Print di una BMP in alta qualità

 come faccio per stamparla con la max qualità possibile ?
Printer.PaintPicture
Bye, G.

 come si fa a stampare DECENTEMENTE con VB6 ?
Cu10 ? :-)
Bye, G.

come si fa a stampare DECENTEMENTE con VB6 ?
Printer.PaintPicture funziona ferpettamente...
Il tuo problema è forse legato al fatto che l'immagine di partenza ha una
qualità bassa, oppure la ridimensioni, oppure usi impostazioni della
stampante non adeguate.
Se vuoi vedere dei risultati accettabili usa 300x300 dpi e non modificare le
dimensioni dell'immagine, almeno non di molto (max 10% delle sue
dimensioni).
In questo modo la stampa della Print.PainPicture è perfetta.
I programmi di grafica intervengono sulle immagini prima della stampa, ed in
certi casi sistemano le eventuali 'magagne'... La Picture è un contenitore
estremamente semplice, e non si può pretendere che faccia cose che non le
competono; ma se ci sbatti dentro una immagine a 300 dpi senza
ridimensionarla e la invii alla stampante la stampa è perfetta.
Esempi?
Ci stampo i logo delle aziende nelle fatture:
http://www.gbcweb.com/articoli___fatture.html
il logo è una bitmap 2000x410 ad 8 bit (grigi)
oppure i moduli dei bollettini postali:
http://www.gbcweb.com/free/vb_esempi/samples_print_EsempioDiStampaCCPconPrnPrv4.zip
Se vuoi funzioni più sofisticate e specifiche usa prodotti diversi.
Questo è bello e gratuito:
http://www.xnview.com
Hola
-> GbC|
www.gbcweb.com

 Printer.PaintPicture funziona ferpettamente...
Intervengo, anche per un mio dubbio...
Vero la PaintPicture funziona molto bene, io non ho mai avuto problemi con
nessun tipo di immagine.
Ma, pur a parità di stampante e definizione: Supponiamo di usare una
PictureBox per fare l'anteprima di stampa, scalata come la Printer e di
mandare in stampa tale PictureBox con PaintPicture (e non di ripetere le
istruzioni di stampa verso Printer). In questo caso a me viene 'na
schiefezza. Smentite/conferme?

 schiefezza. Smentite/conferme?
We Lupo :)
prova a vedere l'esempio dei bollettini postali
-> GbC|
www.gbcweb.com

 prova a vedere l'esempio dei bollettini postali
Ho guardato, bellissimo, ma (se non ho mal interpretato il codice) ... sei
un birichino.
Mi ripeto: So perfettamente che la PaintPicture va bene per le immagini e
che le righe (grafiche o di testo) andrebbero sempre stampate col metodo
.Print, sia su una PictureBox di anteprima, sia sulla Printer, cambiando
semplicemente l'oggetto di destinazione e adottando/riciclando le stesse
identiche istruzioni.
Ma io dicevo ( sta scritto poco sopra, lo vedi che non mi segui, lo vedi?
:-P ) te prova, dopo aver composto la tua picturebox di anteprima e pur con
AutoRedraw=True, a stamparla in una botta sola con PaintPicture, come se
fosse essa stessa un'immagine (anzi, senza "come se fosse", è
un'immagine)... Prova anche a salvarla con SavePicture. Uguale.
MiSonoCapito?

 un birichino.
Eh no :)) Sono un santerellino, non un birichino :)
Nel corso dello sviluppo di quella roba lì ho intuito che dovevo usare due
modalità diverse, e le ho implementate. Creando una picture e stampandola
non si cava il ragno dal buco :))
La picture contiene quello che vedi, 96 o 120 dpi, risoluzione da schifo...
Se la stampi così com'è ottieni una qualità da schifo :|
Durante la stampa scrivo in un file temporaneo i metacomandi che
costituiscono la stampa, e poi decido se assemblare l'anteprima o inviare il
tutto alla stampante.
La cosa divertente è che uso quella lib come 'simulatore di stampa',
bypassando l'anteprima se serve.
A parte le birichinate, così facendo si ottengono sia l'anteprima che la
stampa, ed entrambe al max della qualità possibile. Ho un prg in giro (un
gestore di spool) che stampa 60.000 pagine/mese con quella lib lì.
Hola Lupo...
Ci si vede ^_^
-> GbC|
www.gbcweb.com

 inviare il tutto alla stampante.
Sì, tutto il resto è chiaro, faccio anch'io così.

> SavePicture Picture1.Image, "c:\test.bmp"
Se salvi su disco l'immagine presente nella picture, e questa ha una 
qualità da schifo, è logico che poi stampandola ottieni una ciofeca.
Forse dovresti avere come fonte dal disco un'immagine di qualità alta, 
che in run-time carichi in una picturebox per l'anteprima, e che poi nel 
momento della stampa carichi così com'è sul disco in un'alta picturebox 
che userai per la stampa.
In parole povere a quanto ho capito non devi stampare l'immagine che usi 
per l'anteprima, ma l'originale ad alta qualità che hai sul disco.
-- 
Rivolterò il mondo per trovarlo, e anche se andasse in Indocina uno dei 
nostri starà nascosto in una ciotola di riso pronto a sparargli nel culo.
(Pulp Fiction)

 ! :-(
Proverò, ma credo che la mamma si prostituisca...

 cmq grazie perchè ho capito come risolvere:-)
E come, per favore?

 un'altra sub sostituendo tutte le parole PICTURE1. con PRINTER.
Ah, ecco, soluzione ideale e anche facile, salvo, ovviamente, prevedere i
comandi propri della Printer.
Consiglio: invece di duplicare il codice, fai una Sub del tipo Sub
Stampa(destinazione As Object)
e la chiami passando la Picture1 o la Printer, poi, all'interno, puoi
testare con If destinazione Is Printer Then...