lunedì 2 gennaio 2012

[VB6] Stampa Immagini con Zoom

Descrizione :
Un mio esempio pratico su come stampare un'immagine con coordinate e dimensioni prestabilite.

+ Articolo :

Ho deciso di inserire questo breve articolo nel mio Blog, prendendo spunto da una mia soluzione data all'utente di un Forum. Data la genericità del problema posto, la soluzione, semplice ma non banale, può essere facilmente adattata a molti altri casi.

Di seguito carico un'immagine bitmap da disco e scelgo di stamparla centrata rispetto al foglio A4 di destinazione. Inoltre specifico in centimetri le dimensioni desiderate dell'immagine stampata.

--> Codice Esempio :

    Dim percorso As String
    percorso = App.Path & "\"
    
    Const A4LandscapeW As Single = 29.7
    Const A4LandscapeH As Single = 21
    
    Dim larghezzaDesiderata As Single
    larghezzaDesiderata = 20
    Dim altezzaDesiderata As Single
    altezzaDesiderata = 16
    
    'Controlli
    '...
    'If altezzaDesiderata > A4LandscapeH Then ...
    '...
    
    Dim X1 As Single
    X1 = (A4LandscapeW - larghezzaDesiderata) / 2
    Dim Y1 As Single
    Y1 = (A4LandscapeH - altezzaDesiderata) / 2
    
    Dim myPict As Picture
    Set myPict = LoadPicture(percorso & "temp.bmp")
    
    With Printer
    
        .Orientation = 2 'Landscape
        .ScaleMode = 7 'Centimetri
        .ScaleLeft = 0
        .ScaleTop = 0
        .ScaleWidth = A4LandscapeW
        .ScaleHeight = A4LandscapeH
        
        .PaintPicture myPict, X1, Y1, larghezzaDesiderata, altezzaDesiderata
        .EndDoc
        
    End With

La parte di codice "Controlli" commentata è il posto giusto per inserire il codice che dovrebbe eseguire tutte le verifiche di rito prima di dare il via alla stampa ( prima fra tutte : le dimensioni desiderate NON devono eccedere quelle massime del foglio ... ). 

Pur trattandosi di un esempio base, contiene alcune "mosse fondamentali" da compiere nella stampa da VB6, in particolare per quanto riguarda l'Oggetto Printer e il Metodo .PaintPicture().
Per chiunque si stia cimentando nella gestione di stampe di una certa complessità, e non abbia ancora deciso se stare su VB6 o passare a VB.NET, il mio consiglio è anche qui uno solo : GDI+ e .NET permettono un controllo ben superiore.

+ Fine Articolo.

Un Click su "Mi Piace" è il modo migliore per ringraziare l'autore di questo articolo.




0 commenti:

Posta un commento

 
Design by Free WordPress Themes Modificato da MarcoGG