Mettre en couleur une partie d'une form [Résolu]

Signaler
Messages postés
44
Date d'inscription
jeudi 11 mars 2004
Statut
Membre
Dernière intervention
23 janvier 2007
-
xav0021
Messages postés
44
Date d'inscription
jeudi 11 mars 2004
Statut
Membre
Dernière intervention
23 janvier 2007
-
Bonjour,

je crée des parallèlogrammes avec line

je voudrais savoir comment je peux les remplir d'une autre couleur que celle utilisée sur ma form.
Merci

xav0021

17 réponses

Messages postés
44
Date d'inscription
jeudi 11 mars 2004
Statut
Membre
Dernière intervention
23 janvier 2007

ok, merci, j'adapte tout ça.

xav0021
Messages postés
15815
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
92
Si tes praallèlogrames sont fermés, utilise la fonction de l'API Windows ExtFloodFill pour le remplir (cette fonction fait la même chose que le pot de peinture de paint).

_
Avant de poster dans le forum,
prière d'aller lire ceci :
http://www.codes-sources.com/reglement.aspx
<s></s>
Messages postés
135
Date d'inscription
vendredi 4 juin 2004
Statut
Membre
Dernière intervention
14 février 2013

Je crois que tu as un paramètre dans line qui te remplis ton parallélogramme

Jer
Messages postés
44
Date d'inscription
jeudi 11 mars 2004
Statut
Membre
Dernière intervention
23 janvier 2007

je connais pas ce paramètre...

xav0021
Messages postés
135
Date d'inscription
vendredi 4 juin 2004
Statut
Membre
Dernière intervention
14 février 2013

Me.Line (100, 100)-(2000, 2000), 1456, BF

(coin de base) - (coin opposé), couleur,B=rectangle F=rempli

voilà

Jer
Messages postés
44
Date d'inscription
jeudi 11 mars 2004
Statut
Membre
Dernière intervention
23 janvier 2007

sauf que si ton rectangle a effectué une rotation sur lui même, par ex de 25°, ton truc marche pas...

xav0021
Messages postés
135
Date d'inscription
vendredi 4 juin 2004
Statut
Membre
Dernière intervention
14 février 2013

ah ben dans ce cas non

Jer
Messages postés
44
Date d'inscription
jeudi 11 mars 2004
Statut
Membre
Dernière intervention
23 janvier 2007

c'est ça le problème... c'est plus dur qu'il n'y parait.

xav0021
Messages postés
135
Date d'inscription
vendredi 4 juin 2004
Statut
Membre
Dernière intervention
14 février 2013

C'est quoi exactement le but de ton truc. Dis m'en un peu plus, je trouverais peut-être une solution

Jer
Messages postés
15815
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
92
Bah utilise la fonction que je te donne alors : elle te permettra de remplir n'importe quelle forme géométrique fermée, il suffit juste de connaître un point à l'intérieur de cette forme, et elle fera le reste !

_
Avant de poster dans le forum,
prière d'aller lire ceci :
http://www.codes-sources.com/reglement.aspx
<s></s>
Messages postés
44
Date d'inscription
jeudi 11 mars 2004
Statut
Membre
Dernière intervention
23 janvier 2007

je dessine un rectangle et je lui fais faire une rotation par rapport à son centre. Je veux simplement savoir s'il est possible de colorer l'intérieur, même en ayant des côtés qui ne sont pas droits (comme ton ex, dont les côtés générés sont droits...)

xav0021
Messages postés
44
Date d'inscription
jeudi 11 mars 2004
Statut
Membre
Dernière intervention
23 janvier 2007

et tu utilises ExtFloodFill  comment? Le point que je connais, c'est le point d'intersection des diagonales X0 et Y0

xav0021
Messages postés
135
Date d'inscription
vendredi 4 juin 2004
Statut
Membre
Dernière intervention
14 février 2013

Donne ton code de traçage des lignes

Jer
Messages postés
44
Date d'inscription
jeudi 11 mars 2004
Statut
Membre
Dernière intervention
23 janvier 2007

pour les lignes seulement:

  frmDessin.Line (Xa2, Ya2)-(Xb2, Yb2)
  frmDessin.Line (Xb2, Yb2)-(Xc2, Yc2)
  frmDessin.Line (Xc2, Yc2)-(Xd2, YD2)
  frmDessin.Line (Xd2, YD2)-(Xa2, Ya2)

xav0021
Messages postés
135
Date d'inscription
vendredi 4 juin 2004
Statut
Membre
Dernière intervention
14 février 2013

Donne la partie qui te donne tes coorconnées aussi stp

Jer
Messages postés
44
Date d'inscription
jeudi 11 mars 2004
Statut
Membre
Dernière intervention
23 janvier 2007

un clic sur la form donne les coord Xa et Ya, les autres coord sont déduites lorsque je saisi la longueur et la largeur.

xav0021
Messages postés
15815
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
92
Il faut vraiment tout vous faire, c'est dingue cà ! Alors qu'une toute petite recherche dans les codes du sites t'aurais permis de trouver la solution plus rapidement !

Dans la partie déclaration de ta feuille frmDessin :

Private 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
Private Declare Function CreateSolidBrush Lib "gdi32" Alias "CreateSolidBrush" (ByVal crColor As Long) As Long
Private Declare Function SelectObject Lib "gdi32" Alias "SelectObject" (ByVal hdc As Long, ByVal hObject As Long) As Long

Private Const FLOODFILLBORDER = 0

Dans ta fonction de tracé, rajoute ceci :

Dim lBrush As Long
Dim lOldBrush as Long

let lbrush = createsolidbrush(frmDessin.ForeColor)
let loldbrush = selectobject(frmdessin.hdc, lbrush)
call extfloodfill(frmdessin.hdc, 0, 0, frmDessin.Point(0, 0), FLOODFILLBORDER)
call selectobject(frmdessin.hdc, loldbrush)

A adapter à ton code bien sûr

_
Avant de poster dans le forum,
prière d'aller lire ceci :
http://www.codes-sources.com/reglement.aspx
<s></s>