Hit-Parade .VB Research Center . Compteur
Accueil ~  Code ~  Programmes ~  Api ~  Forum ~  Cours ~  Livres ~  Quiz ~  Annuaire
~ 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 ~
 Rechercher un site :
  

~ 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 : Oui

Description :
(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.

ConstanteValeur 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

Visual Basic Research Center - (c) 2000/2002 -  Webmaster : docvb (chez) free (point) fr