2013-04-14 8 views
0

Je souhaite utiliser une zone de texte en lecture seule transparente en remplacement d'une étiquette; pour permettre aux utilisateurs de sélectionner + copier le texte. Exactement ce que l'Explorateur Windows utilise sur les propriétés du fichier fenêtre:Zone de texte transparente

enter image description here

J'ai trouvé la même question: Making a TextBox Transparent

Commentaires il indiqueraient que les solutions proposées ne fonctionnent pas avec ClearType. Mais mes tests du composant "AlphaBlendTextBox - Un textbox transparent/translucide pour .NET" suggèrent le contraire.

Quoi qu'il en soit, le code semble assez complexe pour une telle "tâche simple". Ils sauvegardent l'image de contrôle parent sur une image bitmap, dessinant cette image bitmap encore et encore avec le texte au-dessus. Je m'attendrais à ce qu'il y ait une solution déléguant le dessin de l'arrière-plan au contrôle parental.

Leur solution est peut-être complexe car elle permet également le mélange alpha. Je n'ai pas besoin de ça. Je veux juste voir un arrière-plan parent derrière le texte. Y a-t-il une manière plus simple/plus intelligente?

Notez que je suis satisfait de toute solution winapi (winapi pur, MFC, WinForms, Delphi, peu importe).

Répondre

1

Selon Spy ++, il s'agit d'un contrôle d'édition typique avec WS_EX_LEFT | WS_EX_LTRREADING | WS_EX_RIGHTSCROLLBAR | WS_EX_NOPARENTNOTIFY comme style étendu et WS_CHILDWINDOW | WS_VISIBLE | ES_LEFT | ES_AUTOHSCROLL | ES_READONLY comme style de fenêtre d'origine.

Je l'ai testé dans Win32 et je peux confirmer qu'il fait ce que vous voulez qu'il fasse.

En outre, la prochaine fois que vous souhaitez imiter les apparences d'autres contrôles, lancez simplement Spy ++ pour obtenir des informations détaillées à leur sujet.

enter image description here

+0

Merci pour votre réponse. Va le tester. En fait, j'ai inspecté le contrôle avec Spy ++ avant que je demande. Mais je n'ai rien trouvé d'intéressant sur les styles, donc j'ai supposé qu'il devait y avoir un wndproc assigné qui le rend transparent à la place. Savez-vous lequel de ces styles fait la magie? –

+1

L'exclusion @MartinPrikryl de 'WS_EX_CLIENTEDGE' et l'inclusion de' ES_READONLY' devraient faire l'affaire. Encore une fois, vous pouvez juste le comparer avec un contrôle Edit éditable typique et voir quelle est la différence :) – JosephH

+1

Merci pour votre temps! –

Questions connexes