begin process at 2008 07 21 00:40:04
1 213 530 membres
431 nouveaux aujourd'hui
14 167 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Background de PictureBox transparent [ Divers / General ] (gribouillex)

Background de PictureBox transparent le 17/08/2007 11:13:43

gribouillex

Bonjour,

J'utilise VB 6.0.
J'ai placé une grande image (via Picture) sur le fond d'un Form.
J'ai placé un control PictureBox sur ce Form (pour info, lors de l'execution, un cercle plein se dessine dans ce PictureBox, avec un Timer et tout...).
J'aimerais savoir comment je pourrais rendre transparent le fond du PictureBox.
Le rendu final souhaité : le cercle se dessine sur l'image de fond du Form. Le fond du PictureBox est invisible.

merci pour toute aide


Re : Background de PictureBox transparent le 17/08/2007 12:07:33

DARKSIDIOUS
Membre Club
(Admin CS)
pourquoi donc utiliser un pictureBox, et ainsi bouffer des ressources inutilement sachant que tu peux très bien tracer des graphiques sur ton form directement !



Re : Background de PictureBox transparent le 17/08/2007 12:23:49

gribouillex

mais comment adapter ceci alors ? (je ne suis pas expert)


Private Sub Timer1_Timer()
    vall = vall + 0.2  
    Call affiche_camembert(ctrl)
End Sub

Sub affiche_camembert(camembert As PictureBox)

If vall > 300 Then
    Exit Sub
End If

camembert.Cls
camembert.AutoRedraw = True
camembert.FillStyle = 0
camembert.FillColor = vbRed
If (PI / 2) * vall / 100 < 0 Then
    camembert.Circle (camembert.ScaleWidth / 2, camembert.ScaleHeight / 2), (camembert.ScaleHeight * 0.45), vbYellow, -1.56, (PI / 2) * vall / 100
Else
    camembert.Circle (camembert.ScaleWidth / 2, camembert.ScaleHeight / 2), (camembert.ScaleHeight * 0.45), vbYellow, -1.56, (PI / 2) * (vall - 400) / 100
End If

End Sub


Re : Background de PictureBox transparent le 17/08/2007 12:33:16

DARKSIDIOUS
Membre Club
(Admin CS)
Pas besoin d'être expert, c'est de la logique : tu remplace tout simplement camembert par ta form :

Dans le form_load :
MeAutoRedraw = True ' pas besoin de le faire à chaque appel !
Me.FillStyle = 0 'idem
Me.FillColor = vbRed 'idem

Private Sub Timer1_Timer()
    vall = vall + 0.2  
    Call affiche_camembert(me)
End Sub

Private Sub affiche_camembert(byref camembert As Form)
Dim valeur As Integer

If vall > 300 Then
    Exit Sub
End If

camembert.Cls

valeur = PI / 2 * (iif((PI / 2) * vall / 100 < 0, vall, vall - 400)) * 100

    camembert.Circle (camembert.ScaleWidth / 2, camembert.ScaleHeight / 2), (camembert.ScaleHeight * 0.45), vbYellow, -1.56, valeur

End Sub





Re : Background de PictureBox transparent le 17/08/2007 13:36:11

gribouillex

Je précisais que je n'étais pas un expert simplement parceque j'avais besoin de détails dans la réponse... que tu as d'ailleurs très gentiment fourni.

J'ai essayé ton code, et effectivement, c'est impeccable.
Le seul souci que j'ai maintenant, c'est que je fais des affichages de contrôles sur le Form (des labels essentiellement), et lorsque le cercle se dessine, ceux-ci se mettent à clignoter... souci de réaffichages successifs j'imagine.... comment puis-je éviter ça ?

 

merci


Re : Background de PictureBox transparent le 17/08/2007 13:58:18

DARKSIDIOUS
Membre Club
(Admin CS)
En effet, c'est le soucis qui se pose (et qui devait se poser déjà lorsque tu utilisais ton picturebox) : vb retrace d'abord le fond du formulaire avant de tracer les labels vu que les labels sont des contrôles static (il ne possède pas de fenêtre rattaché), je présume que VB fait automatiquement ce qui devrait se faire manuellement : tracer les textes soit même directement sur le Form.

La solution : tracer les labels "à la main" : par code, au lieu de mettre des contrôles labels, trace les par la routine Print de VB à l'endroit voulu :

TaFeuille.CurrentX = 60
TaFeuille.CurrentY = 100
TaFeuille.Print "COUCOU"




Classé sous : form, fond, transparent, picturebox, background

Participer à cet échange

Pub



Appels d'offres

Dessins techniques
Budget : 60€
Animation Flash - Doma...
Budget : 370€
Application flash medi...
Budget : 1 000€

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

Boutique

Boutique de goodies CodeS-SourceS