~ 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 ExtFloodFill
Declare Function ExtFloodFill Lib "gdi32" ( _ ByVal hDC As Long, _
ByVal XStart As Long, _
ByVal YStart As Long, _
ByVal ClrRef As Long, _
ByVal FillType As Long) As Long
Versions : . Windows 95/98 : Oui . Windows NT : A partir de 3.1 . Windows 2000/XP : OuiDescription : (Origine : Cath - h.cathelineau@infonie.fr)
La fonction ExtFloodFill remplit une surface avec la couleur contenue dans la propriété FillColor de l'objet.
Le coloriage commence au point défini par les coordonnées XStart, YStart et cesse :
- si FillType = 0, lorsqu'une couleur égale à ClrRef est atteinte.
- si FillType = 1, lorsqu'une couleur différente de ClrRef est rencontrée.
Si la fonction réussie, elle retourne une valeur différente de 0.
(ci-desous un exemple d'application basé sur FillType = 0)
Exemple d'utilisation :
' Origine : Cath (h.cathelineau@infonie.fr)
Private Declare Function ExtFloodFill Lib "gdi32" (ByVal hDC As Long, _
ByVal XStart As Long, ByVal YStart As Long, _
ByVal ClrRef As Long, ByVal FillType As Long) As Long
Private Sub Form_Activate()
Dim I As Integer
' Préparation de la feuille
Me.ScaleMode = 3
Me.Move (Screen.Width - 4410) / 2, _
(Screen.Height - 6450) / 2, _
6450, 4410
' Préparation du contrôle PictureBox (Picture1)
With Picture1
.AutoRedraw = True
.ScaleMode = vbPixels
.ForeColor = vbBlack
.FillColor = vbRed
.Top = 7
.Left = 7
.Height = 250
.Width = 250
End With
' Préparation du dessin exemple
Picture1.FillStyle = 1
Picture1.Line (10, 10)-(190, 170), 0&, B
Picture1.Line (10, 10)-(190, 170), 0&
Picture1.Line (10, 170)-(190, 10), 0&
Picture1.Circle (100, 90), 80, 0&, , , 0.6
Picture1.Circle (100, 90), 70, 0&, , , 2
' Palette de couleurs
For I = 1 To 16
Me.Line (260, 11 * I)-(300, (11 * I) + 11), QBColor(0), B
Me.Line (261, (11 * I) + 1)-(299, (11 * I) + 10), QBColor(I - 1), BF
Next
End Sub
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, _
X As Single, Y As Single)
' Enregistre la couleur du point courant sous la souris.
Picture1.FillColor = Point(X, Y)
End Sub
Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, _
X As Single, Y As Single)
' Remplit la zone correspondante du contrôle PictureBox
' avec la couleur courante de la palette.
Dim X1 As Long, Y1 As Long, lgRet As Long
X1 = CLng(X)
Y1 = CLng(Y)
Picture1.FillStyle = 0
lgRet = ExtFloodFill(Picture1.hDC, X1, Y1, 0&, 0&)
Picture1.Refresh
End Sub
Retour à la liste des API |