direttamente dall'MDSN:
[supersaibal]
Metodo PaintPicture
Disegna il contenuto di un file grafico (.bmp, .wmf, .emf, .cur, .ico o .dib) su un oggetto Form, PictureBox o Printer. Non supportaargomenti predefiniti.
Sintassi
oggetto.PaintPicture immagine, x1, y1, larghezza1, altezza1, x2, y2, larghezza2, altezza2, codiceop
La sintassi della funzione PaintPicture è composta dalle seguenti parti:
Parte Descrizione
oggetto Facoltativa.Espressione oggetto che definisce un oggetto dell'elenco "Si applica a". Se oggetto viene omesso, verrà utilizzato il form che ha lostato attivo.
immagine Obbligatoria. Origine dei dati grafici da disegnare in oggetto. Deve essere la proprietà Picture di un oggetto Form o PictureBox.
x1, y1 Obbligatoria. Valori a precisione singola che indicano le coordinate di destinazione (asse x e asse y) in oggetto, in corrispondenza delle quali verrà disegnata immagine. La proprietà ScaleMode di oggetto determina l'unità di misura utilizzata.
larghezza1 Facoltativa. Valore a precisione singola che indica la larghezza di destinazione di immagine. La proprietà ScaleMode di oggetto determina l'unità di misura utilizzata. Se la larghezza di destinazione è superiore o inferiore alla larghezza di origine (larghezza2), immagine verrà ingrandita o ridotta corrispondentemente. Se l'argomento viene omesso, verrà utilizzata la larghezza di origine.
altezza1 Facoltativa. Valore a precisione singola che indica l'altezza di destinazione di immagine. La proprietà ScaleMode di oggetto determina l'unità di misura utilizzata. Se l'altezza di destinazione è superiore o inferiore all'altezza di origine (altezza2), immagine verrà ingrandita o ridotta corrispondentemente. Se l'argomento viene omesso, verrà utilizzata l'altezza di origine.
x2, y2 Facoltativa. Valori a precisione singola che indicano le coordinate (asse x e asse y) di un'area di ritaglio all'interno di immagine. La proprietà ScaleMode di oggetto determina l'unità di misura utilizzata. Se viene omesso, l'argomento verrà impostato su 0.
larghezza2 Facoltativa. Valore a precisione singola che indica la larghezza di origine di un'area di ritaglio all'interno di immagine. La proprietà ScaleMode di oggetto determina l'unità di misura utilizzata. Se l'argomento viene omesso, verrà utilizzata l'intera larghezza di origine.
altezza2 Facoltativa. Valore a precisione singola che indica l'altezza di origine di un'area di ritaglio all'interno di immagine. La proprietà ScaleMode di oggetto determina l'unità di misura utilizzata. Se l'argomento viene omesso, verrà utilizzata l'intera altezza di origine.
codiceop Facoltativa. Valore lungo o codice utilizzato soltanto conbitmap. Definisce un'operazione bit per bit, ad esempio vbMergeCopy o vbSrcAnd, eseguita mentre immagine viene disegnata su oggetto. Per un elenco completo delle costanti, vedere l'argomento Costanti RasterOp nella Guida in linea di Visual Basic.
L'utilizzo di codiceop prevede alcune limitazioni. Se, ad esempio, l'origine è un'icona o un metafile, è possibile utilizzare come codiceop solo vbSrcCopy e, inoltre, un codiceop che interagisce con il motivo (o "brush" nella terminologia utilizzata nell'SDK), ad esempio MERGECOPY, PATCOPY, PATPAINT e PATINVERT, interagisce in effetti con la proprietà FillStyle della destinazione.
Nota Codiceop viene utilizzato per passare un'operazione bit per bit a una bitmap. Se si specifica un valore per questo argomento quando si passano altri tipi di immagine, per impostazione predefinita verrà generato l'errore "Chiamata di routine o argomento non valido". Per evitare questo errore, non specificare alcun valore per l'argomento codiceop quando non si utilizzano immagini bitmap.
Osservazioni
Per capovolgere una bitmap in senso orizzontale o verticale, specificare valori negativi per l'altezza di destinazione (altezza1) e/o la larghezza di destinazione (larghezza1).
È possibile omettere il numero desiderato diargomenti facoltativi finali. Se si omettono uno o più di tali argomenti, non utilizzare virgole dopo l'ultimo argomento specificato. Per specificare un argomento facoltativo, sarà necessario specificare tutti gli argomenti facoltativi che lo precedono nellasintassi.
Si noti che il caricamento di un file .bmp in un controllo PictureBox e l'utilizzo della funzione API di Windows BitBlt() per aggiungere un'immagine nel controllo portano a risultati diversi. Quando si utilizza la funzione BitBlt, al controllo PictureBox non verranno trasmesse informazioni sul ridimensionamento, come invece avviene quando si utilizza il metodo LoadPicture. Lo stesso problema si verifica se si impostano le proprietà ScaleWidth e ScaleHeight sulle dimensioni dell'immagine. Per fare in modo che il controllo PictureBox venga ridimensionato in base alla nuova immagine dopo aver eseguito la funzione BitBlt, è necessario scrivere codice che consenta di ottenere questo risultato, ovvero convertire le unità e gestire nel modo appropriato i bordi. Di seguito viene riportato un semplice esempio relativo a questo tipo di operazioni:
Sub ResizePictureBoxToImage(pic as PictureBox, twipWd _
as Integer, twipHt as Integer)
' In questo esempio si presume che tutte le unità
' siano espresse in twip. Se non lo sono, è
' necessario convertirle in twip prima di
' richiamare questa routine. Si presume inoltre
' che la funzione BitBlt sia stata applicata
' all'immagine utilizzando i valori 0,0.
Dim BorderHt as Integer, BorderWd as Integer
BorderWd = Pic.Width - Pic.ScaleWidth
BorderHt = Pic.Height - Pic.ScaleHeight
pic.Move pic.Left, pic.Top, twipWd + BorderWd, _
twipHt + BorderHt
End Sub
[/supersaibal]