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

VBA Access Discussion :

Transparence PNG sur état avec GDI+ [AC-2016]


Sujet :

VBA Access

  1. #1
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    789
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 789
    Points : 1 266
    Points
    1 266
    Par défaut Transparence PNG sur état avec GDI+
    Bonjour à tous,

    Il y a bien longtemps que je n'avais eu pas besoin de me tourner vers vous pour avoir des conseils.

    J'ai chargé la nouvelle librairie GDI+ d'Arkham pour le traitement d'image sous Office 2016.
    Dans un formulaire j'ai un premier contrôle image dans lequel j'injecte une image.
    Par dessus, ce contrôle, j'ai un second contrôle dans lequel j'injecte une image *.png transparente.
    Je dessine ensuite une simple flèche.
    Dans le formulaire tout fonctionne bien. En revanche, lorsque je fais un aperçu d'état, le fond *.png n'est plus transparent mais blanc.
    Y a t'il une solution pour régler ce problème ?

    Ci-joint, une capture d'image dans un état.

    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
     
    Sub drawArrow(CtrlImg As Image)
    Dim o as ClGdiPlus
    'Création de nouvelles images
    Set o = New ClGdiPlus
     
    'Chargement de l'image PNG de fond
    o.LoadFile CheminImage.png
     
    'Taille de l'image chargée
    oTailleX = o.ImageWidth
    oTailleY = o.ImageHeight
     
    'Centre X de l'image chargée
    oCentreX = oTailleX / 2
    'Centre Y de l'image chargée
    oCentreY = oTailleY / 2
     
    'Coordonnées Y de la base du triangle de la flèche
    oBase_TriangleY = oTailleY - 280
     
    'Dessin de la flèche
    o.DrawPolygon Array(oCentreX, oTailleY - 56, _
            28, oBase_TriangleY, oCentreX - 28, oBase_TriangleY, _
            oCentreX - 28, 16, oCentreX + 28, 16, _
            oCentreX + 28, oBase_TriangleY, oTailleX - 28, oBase_TriangleY), vbBlack, vbBlack
    'On redessine le contrôle image
    o.RepaintNoFormRepaint CtrlImg 
    Set CtrlImg = Nothing
     
    End Sub
    Images attachées Images attachées  
    Cordialement

    Christophe

    N'oubliez pas de mettre pour en faire profiter tout le monde.

  2. #2
    Membre actif
    Homme Profil pro
    Retraité
    Inscrit en
    Février 2012
    Messages
    284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Février 2012
    Messages : 284
    Points : 284
    Points
    284
    Par défaut
    Bonjour,
    Au lieu de charger l'image transparente sur laquelle tu dessines la flèche, charge l'image de fond et dessine la flèche dessus.
    Un travail qui plait est à moitié fait.

  3. #3
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    789
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 789
    Points : 1 266
    Points
    1 266
    Par défaut
    Bonsoir Tortille,

    Effectivement, j'ai pensé à cette idée.

    Mon concept est le suivant :
    A partir du formulaire, l'opérateur peut déplacer le contrôle qui contient la flèche afin d'indiquer un point particulier.
    Du coup, j'utilise le même code dans les états et ceci me simplifie la vie.
    Sans réponse d'Arkham, je pense que je vais suivre ton conseil et revoir l'ensemble de mon application
    Cordialement

    Christophe

    N'oubliez pas de mettre pour en faire profiter tout le monde.

  4. #4
    Membre actif
    Homme Profil pro
    Retraité
    Inscrit en
    Février 2012
    Messages
    284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Février 2012
    Messages : 284
    Points : 284
    Points
    284
    Par défaut
    Bonjour,
    Tu peux déplacer la flèche à ta guise,
    Quand tu dessines la flèche tu lui ajoutes une région dans DrawPolygon ,,, pRegion
    Après quand l'utilisateur déplace le pointeur, tu testes si le pointeur est sur la région de la flèche avec GetRegionXY

    S'il est sur la région, tu rafraichis l'image du fond puis tu redessines la flèche au nouvel endroit.

    Tu mets cette fonction que si l'utilisateur appuis sur le bouton gauche de la souris.
    Tu testes aussi si le pointeur reste sur la région de la flèche pour sauter la fonction, s'il sort de la région tu redessines.
    Un travail qui plait est à moitié fait.

  5. #5
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    789
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 789
    Points : 1 266
    Points
    1 266
    Par défaut
    Bonjour Tortille,

    Merci beaucoup e m'apporter ton aide.

    Tes conseils sont judicieux mais trop compliqués pour mes petites compétences.
    Dans l'absolu, sur mon formulaire, je peux laisser en l'état puisque la transparence de mon PNG qui supporte ma flèche fonctionne.

    En revanche, c'est sur mon aperçu avant impression que je dois résoudre le problème.
    J'ai essayé hier soir de dessiner sur mon image de fond mais je plante littéralement.

    Je suis parti du même principe :
    Je charge mon PNG en mémoire avec ImgNew. je dessine dessus ma flèche selon mes critères déjà définis.
    Ensuite, j'ajoute ce dessin à mon image de fond avec ImgDraw.
    J'ai un semblant de résultat mais la flèche est totalement disproportionnée. En fait je ne vois qu'une partie.
    J'ai pourtant ajouté dans ImgDraw une emprise (dont je ne suis pas très sûr des paramètresv).
    A savoir X gauche, Y haut, largeur, hauteur, ce qui correspond à la position et la taille du contrôle qui recevait avant le PNG.
    J'aurais besoin, dans un premier temps, de pouvoir récupérer le ImageWidth et ImageHeight de mon ImgNew que j'ai chargée.
    Dans un second temps, comment définir la position et la taille de cette image secondaire à ajouter à l'image principale.

    Merci beaucoup
    Cordialement

    Christophe

    N'oubliez pas de mettre pour en faire profiter tout le monde.

  6. #6
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    789
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 789
    Points : 1 266
    Points
    1 266
    Par défaut
    Bonjour à tous,

    Finalement, j'ai repris mon ancien code et repris entièrement le tutoriel d'Arkham.
    Désormais, tout fonctionne convenablement.

    Merci de votre attention et de vos conseils.
    Cordialement

    Christophe

    N'oubliez pas de mettre pour en faire profiter tout le monde.

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

Discussions similaires

  1. [AC-2010] Loupe sur image avec Gdi+
    Par Tortille dans le forum VBA Access
    Réponses: 1
    Dernier message: 21/09/2019, 12h20
  2. [WD18] Bug sur état avec rubrique monétaire
    Par lololebricoleur dans le forum WinDev
    Réponses: 2
    Dernier message: 25/02/2013, 12h08
  3. Pas de transparence PNG sur tous les navigateurs
    Par Alex-L dans le forum Webdesign & Ergonomie
    Réponses: 3
    Dernier message: 19/04/2011, 18h02
  4. Problème GD avec PNG sur Fedora 4 - quels paths ?
    Par romulus dans le forum Linux
    Réponses: 7
    Dernier message: 28/10/2005, 11h48

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