|
-
Sep 12th, 2001, 08:00 AM
#2
Thread Starter
Addicted Member
PaintPicture, méthode
Dessine le contenu d'un fichier graphique (.bmp, .wmf, .emf, .cur, .ico ou .dib) sur un objet Form, PictureBox ou Printer. Ne gère pas lesarguments nommés.
Syntaxe
object.PaintPicture picture, x1, y1, width1, height1, x2, y2, width2, height2, opcode
La syntaxe de la méthode PaintPicture comprend les éléments suivants :
Élément Description
object Facultatif.Expression d'objet qui prend la valeur d'un objet figurant dans la rubrique Application. Si l'élément object est omis, l'objet Form qui a lefocus est considéré comme object.
picture Source du graphique à dessiner sur object. Doit correspondre à la propriété Picture d'un objet Form ou PictureBox.
x1, y1 Valeurs en simple précision indiquant les coordonnées de destination (axes x et y) sur l'élément object pour l'argument picture à dessiner. La propriété ScaleMode de l'élément object détermine l'unité de mesure à utiliser.
width1 Facultatif. Valeur en simple précision indiquant la largeur de destination de picture. La propriété ScaleMode de l'élément object détermine l'unité de mesure à utiliser. Si la largeur de destination est supérieure ou inférieure à la largeur source (width2), l'argument picture est élargi ou rétréci en conséquence. Si cet élément est omis, la largeur source est utilisée.
height1 Facultatif. Valeur en simple précision indiquant la hauteur de destination de picture. La propriété ScaleMode de l'élément object détermine l'unité de mesure à utiliser. Si la hauteur de destination est supérieure ou inférieure à la hauteur source (height2), l'argument picture est élargi ou rétréci en conséquence. Si cet élément est omis, la hauteur source est utilisée.
x2, y2 Facultatif. Valeurs en simple précision indiquant les coordonnées (axes x et y) d'une zone de coupure à l'intérieur de l'argument picture. La propriété ScaleMode de object détermine l'unité de mesure à utiliser. Si cet élément est omis, la valeur par défaut est 0.
width2 Facultatif. Valeur en simple précision indiquant la largeur source d'une zone de coupure à l'intérieur de l'argument picture. La propriété ScaleMode de object détermine l'unité de mesure à utiliser. Si cet élément est omis, la totalité de la largeur source est utilisée.
Heightt2 Facultatif. Valeur en simple précision indiquant la hauteur source d'une zone de coupure à l'intérieur de l'argument picture. La propriété ScaleMode de object détermine l'unité de mesure à utiliser. Si cet élément est omis, la totalité de la hauteur source est utilisée.
opcode Facultatif. Valeur de type Long ou code utilisé uniquement avec lesimages bitmap. Définit une opération au niveau du bit (par exemple, la constante vbMergeCopy ou vbSrcAnd) qui est exécutée sur l'argument picture à mesure qu'il est dessiné sur object. La liste complète des opérateurs au niveau du bit figure dans la rubrique RasterOp, constantes de l'aide de Visual Basic.
Il existe des limitations à l'utilisation des opcodes. Par exemple, vous ne pouvez pas utiliser un opcode autre que vbSrcCopy si la source est une icône ou un métafichier, et les opcodes qui interagissent avec le motif (ou « brosse », en termes SDK) comme MERGECOPY, PATCOPY, PATPAINT et PATINVERT interagissent en fait avec la propriété FillStyle de la destination.
Note Opcode est utilisé pour passer une opération au niveau du bit sur un bitmap. Placer une valeur dans cet argument lors du passage d'autres types d'images cause une erreur « Argument ou appel de procédure incorrect ». Ceci est voulu. Pour éviter cette erreur, laissez l'argument Opcode à blanc pour toute autre image d'un bitmap.
Remarques
Vous pouvez retourner une image bitmap horizontalement ou verticalement en attribuant des valeurs négatives à la hauteur de destination (height1) et/ou à la largeur de destination (width1).
Vous pouvez omettre toutargument facultatif situé en fin de syntaxe. Si vous omettez un ou plusieurs arguments facultatifs en fin de syntaxe, n'indiquez pas de virgule après le dernier argument utilisé. Pour définir un argument facultatif, vous devez préciser tous les arguments facultatifs qui le précèdent dans lasyntaxe.
Notez qu'il existe une différence entre le chargement d'un .Bmp dans un contrôle PictureBox et l'utilisation de la fonction API Windows BitBlt() pour ajouter une image à ce contrôle. Lorsque vous utilisez BitBlt pour afficher une image, le contrôle PictureBox ne sait pas comment la redimmensionner comme il le fait avec la méthode LoadPicture. L'affectation de la taille de l'image aux propriétés ScaleWidth et ScaleHeight ne fonctionne pas. Si vous voulez que le contrôle PictureBox prenne la taille de la nouvelle image après l'emploi de BitBlt, vous devez le traiter manuellement par code, en convertissant les unités et en gérant les bordures. Voici un exemple ci-dessous :
Sub RedimPictureBoxPourImage(pic as PictureBox, twipWd _
as Integer, twipHt as Integer)
' Ce code suppose que toutes les unités sont en twips.
' Si ce n'est pas le cas, effectuez la conversion
' en twips avant d'appeler cette routine.
' Il suppose aussi que l'image a été placée en 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
If you don't understand french, i'll translate what's in bold:
If you use the BitBlt function to show a picture in a picturebox, the picturebox will not know how to resize the picture as it would if the picture was loaded with the methods of the PictureBox.
So I think PaintPicture is the best way to resize, and after if you need to select part of the picture WITHOUT changing it, you can use bitblt for faster results cause the original pictures loaded will not be affected in any way.
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|