Niveau d'une cuve avec l'api chord [Résolu]

Messages postés
10
Date d'inscription
lundi 1 août 2005
Statut
Membre
Dernière intervention
15 juillet 2010
- - Dernière réponse : pobos
Messages postés
10
Date d'inscription
lundi 1 août 2005
Statut
Membre
Dernière intervention
15 juillet 2010
- 15 juil. 2010 à 18:35
Bonjour à tous,

Je suis entrain de développer une application de gestion de station service. Il y a une partie gestion de stock où je dois representer le niveau de produit dans une cuve. Pour ce faire, j'ai adopté la solution suivante:
- j'ai placé une picturebox picNiveauCuve sur ma form.
- ensuite je trace un cercle dont le fond est transparent.
- et enfin je superpose une corde dont le cercle inscrit a le même diametre que le premier.
Le code est le suivant:
Private Declare Function Chord Lib "gdi32" (ByVal hdc As Long, ByVal x1 As Long, ByVal y1 As Long, ByVal x2 As Long, ByVal y2 As Long, ByVal x3 As Long, ByVal y3 As Long, ByVal x4 As Long, ByVal y4 As Long) As Long

Private Sub Form_Activate()
picNiveauCuve.FillStyle = 1
'Cercle transparent representant la cuve vide et centré dans la picturebox
picNiveauCuve.Circle(picNiveauCuve.ScaleWidth / 2, picNiveauCuve.ScaleHeight / 2), Switch(picNiveauCuve.ScaleWidth >= picNiveauCuve.ScaleHeight, _
picNiveauCuve.ScaleHeight / 2, picNiveauCuve.ScaleWidth < picNiveauCuve.ScaleHeight, picNiveauCuve.ScaleWidth / 2), vbBlack
'Style de remplissage=opaque avec la couleur du produit
Me.FillStyle = 0
Me.FillColor = vbRed 'CouleurProduit
Chord Me.picNiveauCuve.hdc, 0, 0, 3730, 3730, 0, 1800, 3730, 1800
End Sub

Bien sûr les 3730 n'ont pas été choisi au hasard. Ma picturebox fait height=3730 et width=3730.

A l'exécution, la corde n'apparaît pas, seul le cercle vide apparaît même si je fais varier les 2 points qui font varier le niveau (les deux 1800) de 0 à 3730.
Merci de m'aider à resoudre ce problème.
Excellente journée à tous!!!
Afficher la suite 

2 réponses

Meilleure réponse
Messages postés
3247
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
26 décembre 2018
46
3
Merci
Salut
le problème est que les parametres de la function chord sont mesurés en pixel
il faut traduire en pixel

Chord Me.picNiveauCuve.hdc, 0, 0, 3730 / Screen.TwipsPerPixelX, 3730 / Screen.TwipsPerPixelY, 0, 1800 / Screen.TwipsPerPixelY, 3730 / Screen.TwipsPerPixelX, 1800 / Screen.TwipsPerPixelY


ce n'est pas encore au point
bonne prog

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 127 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_ShayW
Messages postés
10
Date d'inscription
lundi 1 août 2005
Statut
Membre
Dernière intervention
15 juillet 2010
0
Merci
Merci ShayW pour cette reponse rapide.
C'est parfait.
Code:
Private Declare Function Chord Lib "gdi32" (ByVal hdc As Long, ByVal x1 As Long, ByVal y1 As Long, ByVal x2 As Long, ByVal y2 As Long, ByVal x3 As Long, ByVal y3 As Long, ByVal x4 As Long, ByVal y4 As Long) As Long

Private Sub Form_Activate()
picNiveauCuve.FillStyle = 1
'Cercle transparent representant la cuve vide et centré dans la picturebox
picNiveauCuve.Circle(picNiveauCuve.ScaleWidth / 2, picNiveauCuve.ScaleHeight / 2), Switch(picNiveauCuve.ScaleWidth >= picNiveauCuve.ScaleHeight, _
picNiveauCuve.ScaleHeight / 2, picNiveauCuve.ScaleWidth < picNiveauCuve.ScaleHeight, picNiveauCuve.ScaleWidth / 2), vbBlack
'Style de remplissage=opaque avec la couleur du produit
picNiveauCuve.FillStyle = 0
picNiveauCuve.FillColor = vbRed 'CouleurProduit
Chord Me.picNiveauCuve.hdc, 0, 0, 3730 / Screen.TwipsPerPixelX, 3730 / Screen.TwipsPerPixelY, 0, 1800 / Screen.TwipsPerPixelY, 3730 / Screen.TwipsPerPixelX, 1800 / Screen.TwipsPerPixelY
End Sub

Merci encore!!!
Bye!
Commenter la réponse de pobos