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

Macros et VBA Excel Discussion :

Texte transparent avec clGdiplus


Sujet :

Macros et VBA Excel

  1. #1
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut Texte transparent avec clGdiplus
    Bonjour

    J'ai bien réussi à écrire le texte sur une image nouvellement créée dynamiquement.
    Ci joint le code:

    J'ai mis toute les options sur le texte.
    Mais je n'arrive pas à le mettre sur fond 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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    Private Sub CommandButton1_Click()
     
    i = i + 1
     e = e + 100
        Set imageplus = Me.Controls.Add("forms.image.1")
        With imageplus
            .Name = "MonImage" & i
            .Left = e
            .Top = 30
            .Width = 200
            .Height = 60
        .BackColor = 123654
        .BackStyle = fmBackStyleTransparent
        .BorderStyle = fmBorderStyleNone
        a = .Width / 3.3
        End With
     
        MsgBox imageplus.Name & " ajouté dans l'UserForm."
    Set o = New ClGdiPlus
    o.DrawSmooth = True
    ' Creation bitmap
    nom = "MonImage" & i
    Call o.CreateBitmap(o.PointsToPixelsX(Me.Controls(nom).Width), o.PointsToPixelsY(Me.Controls(nom).Height))
    ' Fond blanc
    o.FillColor vbWhite
    ' Crayon a l'interieur
    'o.PenAlignMode = PenAlignmentInset
    ' Ajout des textures
    o.TextureAddFromControl "filltext1", Me.ImgCiel
     
    o.ImageListDel "text"
    ' Ecrit un texte
    o.FillTexture = ""
    o.FillTexture = "filltext1"
    o.DrawText "montext", a, "Arial", 0, 0, o.ImageWidth - 2, o.ImageHeight, 1, , 0, 0, -1, 50, True, True, True, True, True
     
    o.RepaintControl Me.Controls(nom)
    End Sub
    Si je ne me trompe pas le "-1 et 50 devrait être pour le fond transparent.

    Mais ça ne fonctionne pas
    Merci pour l'aide
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonsoir
    Peut être serait-il bon, pour la bonne compréhension de ceux qui participent au Forum, de préciser de quel tutoriel d'Arkham46 il s'agit.

  3. #3
    Expert confirmé
    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Par défaut
    bjr

    les paramètres de transparence de DrawText agissent sur la transparence du texte sur l'image (c'est à dire que le texte n'est pas surligné), pas sur la transparence de l'image sur le formulaire

    ici il y a au début FillColor vbWhite donc le fond de l'image est blanc opaque
    inutile d'essayer de mettre du blanc transparent, ça ne marche pas il devient noir

    sinon tu peux simplement faire au début :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    o.FillColor Me.BackColor
    comme ça le fond de l'image est de la couleur de fond du formulaire

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut
    bonjour arkham


    oui jai remarqué il deviens noir
    il y a pourtant le parametre dans la ligne de draw text selon ton tutoriel

    maintenant il me vien une autre idée pour y arriver

    et si apres avoir ecrit mon text dans un control comme je te l'ai presenté precedement je repassais le control dans la moulinette de la classe

    une fois le control ecris

    je fais refait une image du control

    et je fais la meme chose qui est fait avec la fleche (fleche bleue ;fleche rouge)dans l'exemple de ton tuto

    crois tu que ca marcherais ?sachant que ce que l'on vois apres avoir ecris sur le control c'est le bipmap

    enfin je vais essayer ca

    ps :j'ai remarqué aussi que dans le drawpolygone j'etais obligé de metre les point de repere entre parentheze .est_ce une modification de la classe ou bien moi

    le rotate region ne fonctionne pas du tout chez moi
    enfin je desespere il y a plein de chose qui ne fonctionnent pas

    est_ce que c'est parceque je suis sur seven (64) que ca ne marche pas

    a vrai dire je ne comprend plus puisque il ne m affiche aucun message d'erreur

    si tu a la reponse je serais ravi de la connaitre

    je te remercie pour ton aide

    re bonjour


    je viens de me rendre compte que je me suis servis du module exporté du fichier exemple pour excel dans ton tutoriel

    je viens de voir aussi qu'il y a un module prevu pour se passer de la librairie gdiplus.dll avec excel avec excel2007

    est ce cela qui me fou tout en l'air?

    et a tu modifié le drawpixel dans celui la aussi?



    merci de ton aide

    au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  5. #5
    Expert confirmé
    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Par défaut
    Citation Envoyé par patricktoulon Voir le message
    j'ai remarqué aussi que dans le drawpolygone j'etais obligé de metre les point de repere entre parentheze .est_ce une modification de la classe ou bien moi
    il faut donner un tableau de points en paramètre, donc Array(10,10,20,20,30,30,10,10) par exemple
    je ne crois pas que ça ait changé depuis le début

    Citation Envoyé par patricktoulon Voir le message
    le rotate region ne fonctionne pas du tout chez moi
    normalement ça marche, un exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Private Sub Commande1_Click()
    Dim o As clGdiplus
    Set o = New clGdiplus
    o.CreateBitmapForImage Me.Image0
    o.FillColor vbWhite
    o.DrawRectangle 100, 100, 200, 200, , , , , , "monrectangle"
    o.RotateRegion "monrectangle", 50
    o.HatchRegion "monrectangle", vbRed
    o.RepaintControl Me.Image0
    End Sub
    ça dessine un rectangle et crée une région
    on tourne la région de 50° et on la hachure
    (j'ai mis une nouvelle version 1.8, j'espère que le rotateregion n'était pas buggué avant)

    Citation Envoyé par patricktoulon Voir le message
    est_ce que c'est parceque je suis sur seven (64) que ca ne marche pas
    aucune idée...je ne pense pas

    Citation Envoyé par patricktoulon Voir le message
    a vrai dire je ne comprend plus puisque il ne m affiche aucun message d'erreur
    il y a peu de messages d'erreur, les fonctions renvoient généralement False si elle n'ont pas fonctionné

    Citation Envoyé par patricktoulon Voir le message
    je viens de me rendre compte que je me suis servis du module exporté du fichier exemple pour excel dans ton tutoriel
    il faut mieux télécharger le module seul, sinon ce n'est peut-être pas la dernière version

    Citation Envoyé par patricktoulon Voir le message
    je viens de voir aussi qu'il y a un module prevu pour se passer de la librairie gdiplus.dll avec excel avec excel2007

    est ce cela qui me fou tout en l'air?

    et a tu modifié le drawpixel dans celui la aussi?
    Oui les modules sont identiques, sauf que celui pour 2007 utilise la librairie installée avec Office 2007


    Pour le reste, je ne comprend pas bien ce que cherche à faire avec le texte ...
    Ce qui est sûr c'est que pour l'instant la transparence de l'image n'est pas conservée lors du passage dans le contrôle.

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    bonjour arkham


    comme je l'ai precedement speculé

    j'ai essayé de repasser le control a la moulinette

    de la meme facon que l'exemple (fleche bleu,fleche rouge)

    et bien ca marche

    je finalise tout ca et je poste un exemple


    merci pour ton aide
    au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  7. #7
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    bonjour arkham

    voila une facon d'ecrire le text avec texture sur fond 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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    Private Sub CommandButton1_Click()
     
     
    Set o = New ClGdiPlus
    o.DrawSmooth = True
    ' Creation bitmap
     
    Call o.CreateBitmap(500, 100)
     
    ' Ajout des textures par le control"ImgCiel"
    o.TextureAddFromControl "texture", Me.ImgCiel
    o.FillTexture = "texture"
    o.TextureTranslate "texture", 300, 300
    o.DrawText (montext), 100, "Arial", 0, 0, 500, 100, 1, 0, vbBlack, 255, vbRed, 0, , , , True, True
    o.FillTexture = ""
     
    o.FastRepaint Me.Image1
     
     
    End Sub
     
     
     
     
    Private Sub ScrollBar1_Change()
    o.Rotate (Me.ScrollBar1 - 180)
    o.FastRepaint Me.Image1
    End Sub
    en gros je crée la bipmap a la dimension que je veux et non plus a la taille du control image1
    je dessine le texte avec la texture

    reste maintenant a effacer le precedent quand j'applique une rotation avec la scrollbar1


    a tu une idée sur la question

    j'ai utilise le fastrepaint qui lui laisse le fond transparent a la place de repaintcontrol qui lui me met un fond noir
    et m'efface l'image de fond (image1)

    un peu d'aide
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  8. #8
    Expert confirmé
    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Par défaut
    Citation Envoyé par patricktoulon Voir le message

    reste maintenant a effacer le precedent quand j'applique une rotation avec la scrollbar1
    un simple Me.Repaint avant le FastRepaint devrait suffire
    par contre ça risque de scintiller un peu...

  9. #9
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    bonjour arkham

    oui ca j avais conpris le seul probleme c'est que je peut reevenir dessus un text apres avoir rajouté d'autre textes donc tu comprend bien que la il faut faire apel a une memoire j'ai donc inseré un liste
    box transparente qui memorise
    le bipmap
    le drawtext
    la texture
    ou la couleur
    le rotate
    le fond transparent ou non
    ect.....


    je n'ai trouvé que ce moyen pour le momment

    si tu a quelque chose de plus propre je suis preneur



    et oui si je fait repaint apres avoir ajouté deux ou trois text seul le dernier en memoire sera redessiné j'ai donc utilisé une listbox qui memorise tout ca
    et a la fin je retranscris la list box dans un sheet pour le garder en tant que model


    merci de ton aide
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

Discussions similaires

  1. Réponses: 13
    Dernier message: 01/12/2005, 05h34
  2. lire et changer le contenu d'texte.txt avec javascript?!
    Par Squalli dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 11/08/2005, 18h20
  3. Texte en transparence avec TextOut
    Par TigreRouge dans le forum MFC
    Réponses: 2
    Dernier message: 06/06/2005, 22h57
  4. Réponses: 3
    Dernier message: 05/04/2005, 11h52
  5. probleme de transparence avec fog
    Par Daedar dans le forum OpenGL
    Réponses: 10
    Dernier message: 03/05/2004, 08h14

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