Conteneur transparent sur lequel on peut dessiner (hDC)

cs_windob Messages postés 225 Date d'inscription dimanche 19 octobre 2003 Statut Membre Dernière intervention 25 août 2008 - 18 janv. 2008 à 10:01
cs_windob Messages postés 225 Date d'inscription dimanche 19 octobre 2003 Statut Membre Dernière intervention 25 août 2008 - 19 janv. 2008 à 09:24
Salut,

Je développe une petit prog dans lequel j'extrait une icone avec l'API ExtractAssociatedIcon.
J'aimerais dessiner cette icon dans un conteneur qui serait transparent.
Seuelement, le probleme c'est qu'evidemment, si par exemple je prends un userform et que je met BackStyle a transparent, j'ai beau dessiner sur le userform (avec DrawIconEx), je n'ai rien !

Ma question est donc, existe t-il un conteneur possédant un hDC qui soit transparent de base mais sur lequel on peut dessiner et que seul le dessin soit non-transparent ?

J'aimerais éviter les techniques de découpages des bords avec les regions, etc car ces techniques sont souvent lentes et imprecises.

Merci d'avance

4 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
18 janv. 2008 à 14:53
tu peux prendre un UserControl tout bête...
joues avec le MaskColor / MaskPicture / BackStyle
0
cs_windob Messages postés 225 Date d'inscription dimanche 19 octobre 2003 Statut Membre Dernière intervention 25 août 2008
18 janv. 2008 à 15:39
C'est ce que j'ai commencé par faire, mais l'ennui c'est que ça ne gere evidemment pas la transparence partielle.
Est-ce qu'il existe des controles qui sont transparents de base sur lesquels on peu dessiner ? C'est a dire comme un controle Image mais avec une propriété hDc en gros.
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
18 janv. 2008 à 22:24
"ça ne gere evidemment pas la transparence partielle"
mais qu'est-ce que tu racontes ?

as tu bien regardé les propriétés dont je t'ai parlé ?
as tu placé une image dans ton MaskPicture ?
0
cs_windob Messages postés 225 Date d'inscription dimanche 19 octobre 2003 Statut Membre Dernière intervention 25 août 2008
19 janv. 2008 à 09:24
Oui, je l'ai fait, justsment :

J'ai d'abords rempli le usercontrol avec une seule couleur pour que appliqué cette couleur comme maskcolor, j'ai dessiné ensuite le masque de l'icone parametre DI_MASK puis j'ai appliqué l'image du usercontrol a maskpicture :

        Ext_hIcon = ExtractAssociatedIcon(App.hInstance, Icon_FilePath, 0) 'ByVal Icon_Index)
        DrawIconEx UserControl.hDC, Int((m_LabelWidth - m_IconWidth) / 2), 0, Ext_hIcon, m_IconWidth, m_IconWidth, 0, 0, DI_MASK
        DrawTextEx UserControl.hDC, m_Caption, UserControl.ScaleX(m_LabelWidth, vbPixels, vbCharacters), lbRect, DT_CENTER, 0&
       
        UserControl.MaskPicture = UserControl.Image
        UserControl.MaskColor = UserControl.BackColor
       
        DrawIconEx UserControl.hDC, Int((m_LabelWidth - m_IconWidth) / 2), 0, Ext_hIcon, m_IconWidth, m_IconWidth, 0, 0, DI_IMAGE
       
        DestroyIcon Ext_hIcon

J'ai ensuite dessiné l'icone avec DI_IMAGE comme parametre.

Finalement, je me retrouve avec une icone qui est salement détourée puisque le masque est trop grand par rapport a l'image elle-meme puisque l'image contient de la transparence partielle (testé avec l'icone de notepad.exe).

Cordialement.
0
Rejoignez-nous