IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Intercepter l'évènement OnPaint d'un control pour le convertir en Image


Sujet :

VB.NET

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 106
    Points : 67
    Points
    67
    Par défaut Intercepter l'évènement OnPaint d'un control pour le convertir en Image
    Bonjour,

    J'ai trouvé sur le web un control qui permet d'afficher une icone animé de téléchargement (loading animation).
    Il est en pièce jointe.

    Ce que j'ai besoin de faire avec ce control :
    À chaque fois que l'évènement OnPaint surviens,
    le code convertirait le loading en System.Drawing.Image.

    Avez-vous une idée pour comment procéder?

    Merci.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre averti
    Avatar de alex61
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2010
    Messages
    378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2010
    Messages : 378
    Points : 392
    Points
    392
    Par défaut
    la classe ma l'air pas top

    il y a des objet qui ce trouve sur ta form appelé directement a l'intérieur

    regarde s'il n'y pas autre chose qui pourrait répondre a tes besoin sinon

    sinon la ou tu la trouver il devrait y avoir des exemple d'utilisation


    cordialement

    si tu es perdu clique ici
    langage connus : xhtml/css , ASP.NET/VB.NET , JS, JQuery , PHP , SQL, PL/SQL, JAVA,
    BI : DataStage ,Essbase , BO , Microsoft BI , SAS, Talend, Cognos, Qliqview

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 106
    Points : 67
    Points
    67
    Par défaut
    Oops...

    Désolé, c'est moi qui essayais des affaires,
    Ce n'était pas censé être là..

    J'ai modifié le fichier, vous pouvez maintenant le retélécharger.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 106
    Points : 67
    Points
    67
    Par défaut
    Je sais que c'est lors de l'évènement OnPaint qu'il faut intercepter l'image, mais comment?

    La méthode LoadingCircle1.DrawToBitmap() fonctionne, mais le fond n'est pas transparent..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
           Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
                If m_NumberOfSpoke > 0 Then
                    e.Graphics.SmoothingMode = SmoothingMode.HighQuality
     
                    Dim intPosition As Integer = m_ProgressValue
                    For intCounter As Integer = 0 To m_NumberOfSpoke - 1
                        intPosition = intPosition Mod m_NumberOfSpoke
                        DrawLine(e.Graphics, GetCoordinate(m_CenterPoint, m_InnerCircleRadius, m_Angles(intPosition)), GetCoordinate(m_CenterPoint, m_OuterCircleRadius, m_Angles(intPosition)), m_Colors(intCounter), m_SpokeThickness)
                        intPosition += 1
                    Next
                End If
     
     
                MyBase.OnPaint(e)
            End Sub

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 106
    Points : 67
    Points
    67
    Par défaut
    Si ce n'est pas possible de le convertir en Image ou en Icon,

    Est-il possible de contourner l'évènement OnPaint vers l'évènement Paint d'un autre control?

    Merci.

  6. #6
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    tu peux mettre ce controle sur un autre via autrecontrol.controls.add(waitcontrol)

    il reste possible d'obtenir l'image, mais si c'est pour la mettre sur un autre controle c'est moins performant
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 106
    Points : 67
    Points
    67
    Par défaut
    Merci pour ta réponse, mais je ne peux pas faire ça avec le control que j'ai;

    Je m'explique:
    J'ai dans mon application un QTabcontrol (de Qios), et moi, j'intercepte l'évènement Paint pour pouvoir
    ajouter un X sur chaque onglet (pour les fermer) et
    il me faudrait un Icon (ou un code dans Paint) qui afficherait le loading circle lorsque l'onglet télécharge.

  8. #8
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    et bien là ou tu ajoutes ton X tu peux aussi gérer pour ajouter ce que dessine le controle avec le code du controle
    le mieux serait d'encapsuler ca dans une classe avec des membres shared pour ne pas mettre le code sur le form et au même endroit ou tu dessines le X si tu as besoin du wait tu appelles la méthode de la classe en lui envoyant e de l'event paint
    e contient le graphics du control et ca pourra déssiner dessus
    il reste à modifier la position du dessin aussi
    et réduire un peu le code pour ne garder qu'une des animations et sans les propriétés par exemple
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 106
    Points : 67
    Points
    67
    Par défaut
    Wow,

    Merci, maintenant, je suis capable de le convertir en Image!!

    Par contre, finalement je ne le crée pas dans l'évènement Paint de ma TabPage.

    Je fait plutôt ceci dans le OnPaint du LoadingCircle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Dim Image As System.Drawing.Image = New System.Drawing.Bitmap(16, 16) '// Crée l'image
    Dim Graphics As System.Drawing.Graphics = System.Drawing.Graphics.FromImage(Image) '// Extrait le Graphics de l'image
     
     
    ' le code de création du graphics  ici (avec la veriable graphics)

    Ensuite, je peux récupérer l'image.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Intercepter les événements du controller d'un composant
    Par edblv dans le forum Ext JS / Sencha
    Réponses: 2
    Dernier message: 15/09/2014, 11h11
  2. Réponses: 3
    Dernier message: 11/03/2007, 09h03
  3. Capturer l'évènement onPaint d'un TLabel
    Par nicolos dans le forum C++Builder
    Réponses: 7
    Dernier message: 04/11/2004, 18h45
  4. [C#] Quel controle pour le dessin + eviter clignotement
    Par JEG dans le forum Windows Forms
    Réponses: 10
    Dernier message: 08/10/2004, 11h28
  5. "Tree Control" pour "Dialog Based"
    Par bigboomshakala dans le forum MFC
    Réponses: 4
    Dernier message: 22/04/2004, 10h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo