J'utilise VB6
Je veux afficher des courbes avec des picturebox
chaque courbe sera sur une picturebox et chaque picturebox doit etre
transparente ceci dans le but de donner l'impression que toute les courbe
son sur la même picturebox et également pour éviter de redessiner toutes les
courbes si l'une d'entre elle change.
Et voila mon problème je n'arrive pas à rendre transparent une picturebox
!!!
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Zoury
Salut Thierry ! :O)
Pouvez vous m'aidez ?
Combien de courbes aurais-tu à redessiner ? Est-ce que tu emplois l'API graphique de Windows pour le dessin (GDI) ? Donne plus de détails ... et peux-tu nous montrer ton code actuel s'il n'est pas trop énorme ?
-- Cordialement Yanick MVP pour Visual Basic
Salut Thierry ! :O)
Pouvez vous m'aidez ?
Combien de courbes aurais-tu à redessiner ? Est-ce que tu emplois l'API
graphique de Windows pour le dessin (GDI) ?
Donne plus de détails ... et peux-tu nous montrer ton code actuel s'il n'est
pas trop énorme ?
Combien de courbes aurais-tu à redessiner ? Est-ce que tu emplois l'API graphique de Windows pour le dessin (GDI) ? Donne plus de détails ... et peux-tu nous montrer ton code actuel s'il n'est pas trop énorme ?
-- Cordialement Yanick MVP pour Visual Basic
Thierry
Voila les trois modules principaux de mon logiciel affichant les graphes: La procédure Rempliraxes dessine le papier semi log, des labels indiquent l'échelle 10E0 à 10E6 La procédure Ecrirecourbe dessine la courbe dont le numéro est passé en argument La procédure HScroll2_Change déplace un curseur pour rechercher les valeurs des courbes
Les courbes sont acquisent par un module de liaison série et stockées dans le tableau tabval(4,1,1440) avec 5 courbes,2échelles par courbe, 1440 minutes par courbe soit un jour
Comme je n'arrive pas à utilser la transparence je suis obligé de tout redessiner à chaque déplacement du curseur. De plus je ne souhaite pas toujours afficher les 5 courbes en même temps.
Voila peut être qu'avec cesinfos il sera plus facile de comprendre mon besoin. Merci
Private Sub Remplireaxes() ' création des axes X et Y du quadrillage For i = 0 To 6 zz = (Picture1(0).Height - 1500) / 6 tabaxe(0, i) = (Picture1(0).Height - 1000) - zz * i Next For i = 0 To 12 zz = (Picture1(0).Width - 1500) / 12 tabaxe(1, i) = (Picture1(0).Width - 750) - zz * i Next End Sub
Private Sub Ecrirecourbe(courbe As Integer) EcretageCourbe 'les valeurs > 1 10E6 et < 1 10E0 ne sont pas affichées echx = Picture1(0).Width - 1500 ' largeur de la zone quadrillée echy = Picture1(0).Height - 1500 ' hauteur de la zone quadrillée x0 = Picture1(0).Width - 750 ' origine x de la zone quadrillée y0 = Picture1(0).Height - 1000 ' origine y de la zone quadrillée For i = 0 To 1439 X = echx / 1440 * (1439 - i) y = echy / 1440 * tabval(courbe, 1, i) Picture1(0).PSet (x0 - X, y0 - y) Next End Sub
Private Sub HScroll2_Change() ' curseur de recherche de valeur Picture1(0).Cls Dessineaxes Dessinheure For i = 0 To 4 Command2_Click (i) Next Picture1(0).ForeColor = vbWhite echx = Picture1(0).Width - 1500 ' largeur de la zone quadrillée minix = 750 maxix = Picture1(0).Width - 750 HScroll2.Min = 1 HScroll2.Max = 1440 X = HScroll2.Value Picture1(0).Line ((minix + X * echx / 1440), 500)-((minix + X * echx / 1440), Picture1(0).Height - 750) For i = 0 To 4 Text3(i).Text = tabval(i, 0, X) Next End Sub
"Zoury" <yanick_lefebvre at hotmail dot com> a écrit dans le message de news: e%
Salut Thierry ! :O)
Pouvez vous m'aidez ?
Combien de courbes aurais-tu à redessiner ? Est-ce que tu emplois l'API graphique de Windows pour le dessin (GDI) ? Donne plus de détails ... et peux-tu nous montrer ton code actuel s'il n'est pas trop énorme ?
-- Cordialement Yanick MVP pour Visual Basic
Voila les trois modules principaux de mon logiciel affichant les graphes:
La procédure Rempliraxes dessine le papier semi log, des labels indiquent
l'échelle 10E0 à 10E6
La procédure Ecrirecourbe dessine la courbe dont le numéro est passé en
argument
La procédure HScroll2_Change déplace un curseur pour rechercher les valeurs
des courbes
Les courbes sont acquisent par un module de liaison série et stockées dans
le tableau tabval(4,1,1440) avec
5 courbes,2échelles par courbe, 1440 minutes par courbe soit un jour
Comme je n'arrive pas à utilser la transparence je suis obligé de tout
redessiner à chaque déplacement du curseur.
De plus je ne souhaite pas toujours afficher les 5 courbes en même temps.
Voila peut être qu'avec cesinfos il sera plus facile de comprendre mon
besoin.
Merci
Private Sub Remplireaxes() ' création des axes X et Y du quadrillage
For i = 0 To 6
zz = (Picture1(0).Height - 1500) / 6
tabaxe(0, i) = (Picture1(0).Height - 1000) - zz * i
Next
For i = 0 To 12
zz = (Picture1(0).Width - 1500) / 12
tabaxe(1, i) = (Picture1(0).Width - 750) - zz * i
Next
End Sub
Private Sub Ecrirecourbe(courbe As Integer)
EcretageCourbe 'les valeurs > 1 10E6 et < 1 10E0 ne sont pas affichées
echx = Picture1(0).Width - 1500 ' largeur de la zone quadrillée
echy = Picture1(0).Height - 1500 ' hauteur de la zone quadrillée
x0 = Picture1(0).Width - 750 ' origine x de la zone quadrillée
y0 = Picture1(0).Height - 1000 ' origine y de la zone quadrillée
For i = 0 To 1439
X = echx / 1440 * (1439 - i)
y = echy / 1440 * tabval(courbe, 1, i)
Picture1(0).PSet (x0 - X, y0 - y)
Next
End Sub
Private Sub HScroll2_Change() ' curseur de recherche de valeur
Picture1(0).Cls
Dessineaxes
Dessinheure
For i = 0 To 4
Command2_Click (i)
Next
Picture1(0).ForeColor = vbWhite
echx = Picture1(0).Width - 1500 ' largeur de la zone quadrillée
minix = 750
maxix = Picture1(0).Width - 750
HScroll2.Min = 1
HScroll2.Max = 1440
X = HScroll2.Value
Picture1(0).Line ((minix + X * echx / 1440), 500)-((minix + X * echx /
1440), Picture1(0).Height - 750)
For i = 0 To 4
Text3(i).Text = tabval(i, 0, X)
Next
End Sub
"Zoury" <yanick_lefebvre at hotmail dot com> a écrit dans le message de
news: e%2360xwHaFHA.3120@TK2MSFTNGP12.phx.gbl...
Salut Thierry ! :O)
Pouvez vous m'aidez ?
Combien de courbes aurais-tu à redessiner ? Est-ce que tu emplois l'API
graphique de Windows pour le dessin (GDI) ?
Donne plus de détails ... et peux-tu nous montrer ton code actuel s'il
n'est
pas trop énorme ?
Voila les trois modules principaux de mon logiciel affichant les graphes: La procédure Rempliraxes dessine le papier semi log, des labels indiquent l'échelle 10E0 à 10E6 La procédure Ecrirecourbe dessine la courbe dont le numéro est passé en argument La procédure HScroll2_Change déplace un curseur pour rechercher les valeurs des courbes
Les courbes sont acquisent par un module de liaison série et stockées dans le tableau tabval(4,1,1440) avec 5 courbes,2échelles par courbe, 1440 minutes par courbe soit un jour
Comme je n'arrive pas à utilser la transparence je suis obligé de tout redessiner à chaque déplacement du curseur. De plus je ne souhaite pas toujours afficher les 5 courbes en même temps.
Voila peut être qu'avec cesinfos il sera plus facile de comprendre mon besoin. Merci
Private Sub Remplireaxes() ' création des axes X et Y du quadrillage For i = 0 To 6 zz = (Picture1(0).Height - 1500) / 6 tabaxe(0, i) = (Picture1(0).Height - 1000) - zz * i Next For i = 0 To 12 zz = (Picture1(0).Width - 1500) / 12 tabaxe(1, i) = (Picture1(0).Width - 750) - zz * i Next End Sub
Private Sub Ecrirecourbe(courbe As Integer) EcretageCourbe 'les valeurs > 1 10E6 et < 1 10E0 ne sont pas affichées echx = Picture1(0).Width - 1500 ' largeur de la zone quadrillée echy = Picture1(0).Height - 1500 ' hauteur de la zone quadrillée x0 = Picture1(0).Width - 750 ' origine x de la zone quadrillée y0 = Picture1(0).Height - 1000 ' origine y de la zone quadrillée For i = 0 To 1439 X = echx / 1440 * (1439 - i) y = echy / 1440 * tabval(courbe, 1, i) Picture1(0).PSet (x0 - X, y0 - y) Next End Sub
Private Sub HScroll2_Change() ' curseur de recherche de valeur Picture1(0).Cls Dessineaxes Dessinheure For i = 0 To 4 Command2_Click (i) Next Picture1(0).ForeColor = vbWhite echx = Picture1(0).Width - 1500 ' largeur de la zone quadrillée minix = 750 maxix = Picture1(0).Width - 750 HScroll2.Min = 1 HScroll2.Max = 1440 X = HScroll2.Value Picture1(0).Line ((minix + X * echx / 1440), 500)-((minix + X * echx / 1440), Picture1(0).Height - 750) For i = 0 To 4 Text3(i).Text = tabval(i, 0, X) Next End Sub
"Zoury" <yanick_lefebvre at hotmail dot com> a écrit dans le message de news: e%
Salut Thierry ! :O)
Pouvez vous m'aidez ?
Combien de courbes aurais-tu à redessiner ? Est-ce que tu emplois l'API graphique de Windows pour le dessin (GDI) ? Donne plus de détails ... et peux-tu nous montrer ton code actuel s'il n'est pas trop énorme ?
-- Cordialement Yanick MVP pour Visual Basic
Fred
Dans son message 42a1fe51$0$11704$ Thierry nous dit :
[...]
Bonsoir, Cela fait un moment que je n'ai pas fait de graphique mais je crois me souvenir de deux points :
1) on peut changer le "ScaleMode" en mode utilisateur de façon à adapter les limites de la zone image au problème. Par exemple tu peux dire que la largeur du picture box est de 24h30 (24,5) que le point le plus à gauche est de -15min (-0.25) et le point le plus à droite 24h15 (24,25). Cela rend le programme beaucoup plus facile à lire et à modifier.
2) Pour tracer, il y a un mode XOR qui permet d'effacer un point en réécrivant dessus. Pratique pour gérer des déplacements de points sans affecter le reste. J'ai cru comprendre que tu trace des lignes de projection sur les axes en fonction du curseur (je ne suis pas rentré dans le détail). Ce mode (XOR) est tout indiqué pour cela. A chaque changement, tu traces l'ancienne position puis la nouvelle. Le premier tracé aura pour effet d'effacer le tracé de la position précédente
Bonne soirée.
-- Fred
Dans son message 42a1fe51$0$11704$8fcfb975@news.wanadoo.fr
Thierry nous dit :
[...]
Bonsoir,
Cela fait un moment que je n'ai pas fait de graphique mais je crois me
souvenir de deux points :
1) on peut changer le "ScaleMode" en mode utilisateur de façon à adapter les
limites de la zone image au problème. Par exemple tu peux dire que la
largeur du picture box est de 24h30 (24,5) que le point le plus à gauche est
de -15min (-0.25) et le point le plus à droite 24h15 (24,25).
Cela rend le programme beaucoup plus facile à lire et à modifier.
2) Pour tracer, il y a un mode XOR qui permet d'effacer un point en
réécrivant dessus. Pratique pour gérer des déplacements de points sans
affecter le reste. J'ai cru comprendre que tu trace des lignes de projection
sur les axes en fonction du curseur (je ne suis pas rentré dans le détail).
Ce mode (XOR) est tout indiqué pour cela. A chaque changement, tu traces
l'ancienne position puis la nouvelle. Le premier tracé aura pour effet
d'effacer le tracé de la position précédente
Dans son message 42a1fe51$0$11704$ Thierry nous dit :
[...]
Bonsoir, Cela fait un moment que je n'ai pas fait de graphique mais je crois me souvenir de deux points :
1) on peut changer le "ScaleMode" en mode utilisateur de façon à adapter les limites de la zone image au problème. Par exemple tu peux dire que la largeur du picture box est de 24h30 (24,5) que le point le plus à gauche est de -15min (-0.25) et le point le plus à droite 24h15 (24,25). Cela rend le programme beaucoup plus facile à lire et à modifier.
2) Pour tracer, il y a un mode XOR qui permet d'effacer un point en réécrivant dessus. Pratique pour gérer des déplacements de points sans affecter le reste. J'ai cru comprendre que tu trace des lignes de projection sur les axes en fonction du curseur (je ne suis pas rentré dans le détail). Ce mode (XOR) est tout indiqué pour cela. A chaque changement, tu traces l'ancienne position puis la nouvelle. Le premier tracé aura pour effet d'effacer le tracé de la position précédente