~ Edito ~
12/03/2006 @ 13:39
Depuis la dernière mise à jour (qui remonte à... oulala plusieurs mois), un petit ménage de printemps s'impose. Ca tombe bien, c'est presque la période. Au menu, et progressivement sur les jours à venir, rafraîchissement de plusieurs fonctions et procédures, nouvelles APIs et nouveaux programmes.
~ Rechercher ~
~ Annuaire VB ~
~ Partenaires ~
|
Fonction StretchBlt
Declare Function StretchBlt Lib "gdi32" Alias "StretchBlt" ( _ ByVal hdc As Long, _
ByVal x As Long, _
ByVal y As Long, _
ByVal nWidth As Long, _
ByVal nHeight As Long, _
ByVal hSrcDC As Long, _
ByVal XSrc As Long, _
ByVal YSrc As Long, _
ByVal nSrcWidth As Long, _
ByVal nSrcHeight As Long, _
ByVal dwRop As Long) As Long
Versions : . Windows 95/98 : Oui . Windows NT : A partir de 3.1 . Windows 2000/XP : OuiDescription : (Origine : Philippe Plançon - plancon@onetelnet.fr)
Cette fonction permet de redimensionner une image, et elle a le même effet que la propriété Stretch (=Vraie) d'un contrôle Image. Mais la propriété Stretch n'existe pas pour les contrôles Picture, c'est pourquoi il est intéressant de connaître cette API.
Contrôle récepteur :
hDC est le handle du contrôle qui reçoit l'image.
X, Y, nWidth et nHeight définissent le rectangle dans lequel l'image source s'insérera.
Contrôle source :
hSrcDC est le handle du contrôle source.
XSrc, YSrc, nSrcWidth, nSrcHeight définissent le rectangle de l'image source (cela peut-être le contrôle complet une portion).
La constante :
dwRop définit l'opération à effectuer, voir la liste des constantes disponibles dans le tableau ci-dessous.
Constante | Valeur |
Définition |
SRCAND | &H8800C6 |
Combine source et destination avec l'opérateur logique AND. |
SRCCOPY | &HCC0020 |
Copie l'image source intégralement sans se soucier de l'image de destination. |
SRCERASE | &H440328 |
Combine source et l'inversion de la destination avec l'opérateur logique AND. |
SRCINVERT | &H660046 |
Combine source et destination avec l'opérateur logique XOR. |
SRCPAINT | &HEE0086 |
Combine source et destination avec l'opérateur logique OR. |
NOTSRCCOPY | &H330008 |
Copie l'image source inversée sans se soucier de l'image de destination. |
NOTSRCERASE | &H1100A6 |
Combine source et destination avec l'opérateur logique OR puis inversion. |
MERGEPAINT | &HBB0226 |
Combine le source inversé et l'image de destination avec l'opérateur logique OR. |
DSTINVERT | &H550009 |
Inversion de l'image de destination sans se soucier du source. |
BLACKNESS | &H42 |
Tout en noir. |
WHITENESS | &HFF0062 |
Tout en blanc. |
Exemple d'utilisation :
' (Exemple de Philippe Plançon)
' A mettre dans un module...
' Zoom d'une image (Unité le pixel)
Declare Function StretchBlt Lib "gdi32.dll" ( _
ByVal hDC As Long, ByVal X As Long, ByVal Y As Long, _
ByVal nWidth As Long, ByVal nHeight As Long, _
ByVal hSrcDC As Long, ByVal XSrc As Long, _
ByVal YSrc As Long, ByVal nSrcWidth As Long, _
ByVal nSrcHeight As Long, ByVal dwRop As Long) As Long
' Copie une image (Pour API : StretchBlt)
Public Const SRCCOPY = &HCC0020
' A mettre dans une feuille...
Private Sub Form_Load()
' Charger une image dans Picture1 et mettre la propriété AutoSize à vraie
' Attention : il faut mettre les propriétés autoredraw des contrôles images à vraie
' sinon vous allez avoir des surprises :)
' Attention : les contours sont comptabilisés dans la hauteur et la largeur
' Mettre la propriété Appearance à 0 (plat) et BorderStyle à 0 (Aucun)
' pour les deux contrôles Image.
' ---Change le pointeur de la souris---
Screen.MousePointer = vbHourglass
' ---Déclaration des variables---
Dim Ret As Long
Dim Hauteur As Long
Dim Largeur As Long
Dim Zoom As Single
' ---Initialisation---
Zoom = 0.5
Picture1.ScaleMode = vbPixels
Picture2.ScaleMode = vbPixels
Me.ScaleMode = vbPixels
Hauteur = CLng(Zoom * Picture1.Height)
Largeur = CLng(Zoom * Picture1.Width)
' ---Opération a effectuer : COPIER la bitmap de la zone d'image source---
With Picture2
.Width = Largeur
.Height = Hauteur
End With
Ret = StretchBlt(Picture2.hDC, 0, 0, Largeur, Hauteur, _
Picture1.hDC, 0, 0, Picture1.Width, Picture1.Height, _
SRCCOPY)
Picture2.Picture = Picture2.Image
' ---Remet le pointeur de la souris par défaut---
Screen.MousePointer = vbDefault
End Sub
Retour à la liste des API |