OVH Cloud OVH Cloud

remplir d'une couleur un carré

3 réponses
Avatar
michael
Bonjour,

comment peut on remplir d'une couleur le rectangle délimiter par ces
instruction??
existe t'il une solution?? je travaille sur une picture box qui s'apelle
"plot"
Form5.Plot.Line (X1Pos, Yaxenul)-(X1Pos, Y1Pos), RGB(255, 0, 0)
Form5.Plot.Line (X1Pos, Y1Pos)-(X2Pos, Y1Pos), RGB(255, 0, 0)
Form5.Plot.Line (X2Pos, Y1Pos)-(X2Pos, Yaxenul), RGB(255, 0, 0)

merci d'avance

3 réponses

Avatar
Zoury
Salut Michael ! :O)

comment peut on remplir d'une couleur le rectangle délimiter par ces
instruction??
existe t'il une solution?? je travaille sur une picture box qui s'apelle
"plot"
Form5.Plot.Line (X1Pos, Yaxenul)-(X1Pos, Y1Pos), RGB(255, 0, 0)
Form5.Plot.Line (X1Pos, Y1Pos)-(X2Pos, Y1Pos), RGB(255, 0, 0)
Form5.Plot.Line (X2Pos, Y1Pos)-(X2Pos, Yaxenul), RGB(255, 0, 0)



Ton rectangle n'a que trois lignes ? ;O)

Pour créer un rectangle/carré en VB pure on ferait comme ceci :
'***
' Form1
' 1 PictureBox
' 1 CommandButton
Option Explicit

Private Sub Command1_Click()
' indique que les coordonnées sont en pixels
Picture1.ScaleMode = vbPixels
' dessine un rectangle rouge rempli entre les deux points
Picture1.Line (10, 10)-(60, 60), RGB(255, 0, 0), BF
End Sub
'***

l'instruction BF à la fin de la ligne à la signification suivante :
- B désigne qu'un rectangle sera dessiner utilisant les deux points précisés
comme points opposés dans la forme.
- F désigne que le système doit remplir le rectangle créée.



Cependant, si tu souhaites dessiner plusieurs rectangles cette méthode
pourrait s'avérer lente et couteuse en ressource.
Dans ce cas tu devrais employer les APIs comme ceci :
'***
Option Explicit

Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type

Private Declare Function SetRect _
Lib "user32" ( _
ByRef lpRect As RECT, _
ByVal X1 As Long, _
ByVal Y1 As Long, _
ByVal X2 As Long, _
ByVal Y2 As Long) As Long

Private Declare Function CreateSolidBrush _
Lib "gdi32" ( _
ByVal crColor As Long) As Long

Private Declare Function SelectObject _
Lib "gdi32" ( _
ByVal hdc As Long, _
ByVal hObject As Long) As Long

Private Declare Function FillRect _
Lib "user32" ( _
ByVal hdc As Long, _
ByRef lpRect As RECT, _
ByVal hBrush As Long) As Long

Private Declare Function DeleteObject _
Lib "gdi32" ( _
ByVal hObject As Long) As Long

Private Sub Command1_Click()

Dim rc As RECT
Dim hBrush As Long
Dim hOldBrush As Long

' on détermine le taille et l'emplacement
' rectangle
' note : La méthode FillRect n'inclus
' pas le côté droit et le bas lors du
' remplissage. GDI rempli le rectangle jusqu'aux
' côtés droit et bas sans les inclure, c'est
' pourquoi nous devons ajouter 1 aux coordonnées
' du deuxième point
Call SetRect(rc, 10, 10, 61, 61)

' on créer et sélectionne notre pinceau
hBrush = CreateSolidBrush(vbRed)
hOldBrush = SelectObject(Picture1.hdc, hBrush)

' on dessine le rectangle
Call FillRect(Picture1.hdc, rc, hBrush)

' on libère nos ressources
Call SelectObject(Picture1.hdc, hOldBrush)
Call DeleteObject(hBrush)

End Sub

Private Sub Form_Load()
Picture1.ScaleMode = vbPixels
End Sub
'***


--
Cordialement
Yanick
MVP pour Visual Basic
Avatar
Jean-Marc
"michael" a écrit dans le message de
news:
Bonjour,

comment peut on remplir d'une couleur le rectangle délimiter par ces
instruction??
existe t'il une solution?? je travaille sur une picture box qui s'apelle
"plot"
Form5.Plot.Line (X1Pos, Yaxenul)-(X1Pos, Y1Pos), RGB(255, 0, 0)
Form5.Plot.Line (X1Pos, Y1Pos)-(X2Pos, Y1Pos), RGB(255, 0, 0)
Form5.Plot.Line (X2Pos, Y1Pos)-(X2Pos, Yaxenul), RGB(255, 0, 0)

merci d'avance



Hello,

tu peux utiliser ExtFloodFill.

Voici le prototype:
Declare Function ExtFloodFill Lib "gdi32" Alias "ExtFloodFill" (ByVal hdc As
Long, ByVal x As Long, ByVal y As Long, ByVal crColor As Long, ByVal
wFillType As Long) As Long

Et les explications corerspondantes (MSDN)
http://msdn.microsoft.com/library/en-us/gdi/bitmaps_7yb0.asp


Enfin, le toujours excellent API list fourni des explications et un exemple:
http://www.mentalis.org/apilist/ExtFloodFill.shtml



--
Jean-marc
"There are only 10 kind of people
those who understand binary and those who don't."
mailto: remove '_no_spam_' ;
Avatar
michael
Merci pour vos réponse c'est ce que je cherchais, super pratique ce newsgroup
;-)

"michael" a écrit :

Bonjour,

comment peut on remplir d'une couleur le rectangle délimiter par ces
instruction??
existe t'il une solution?? je travaille sur une picture box qui s'apelle
"plot"
Form5.Plot.Line (X1Pos, Yaxenul)-(X1Pos, Y1Pos), RGB(255, 0, 0)
Form5.Plot.Line (X1Pos, Y1Pos)-(X2Pos, Y1Pos), RGB(255, 0, 0)
Form5.Plot.Line (X2Pos, Y1Pos)-(X2Pos, Yaxenul), RGB(255, 0, 0)

merci d'avance