J'ai créé un bitmap à l'aide de GDI + Toute aide ou code sera appréciée. P>
5 Réponses :
Si vous souhaitez dessiner du texte sans formation de fond, setbkmode (HDC, transparent) code>
dira à GDI de quitter le fond lors du dessin du texte. P>
Pour rendre la couleur de premier plan du texte avec alpha ... va être plus compliqué. GDI ne supporte pas réellement les canaux alpha tout cela largement dans ses API. En dehors de AlphaBend en fait tout ce qu'il fait est de préserver le canaliser. Il n'est en fait pas valide pour définir les bits supérieurs d'une valeur de Coloref sur alpha, car l'octet élevé est réellement utilisé pour les indicateurs pour indiquer si le Coloref est (plutôt qu'une valeur RGB) une entrée de palette. P>
Alors, malheureusement, votre seule voie à suivre est de: P>
* Il peut être suffisant de simplement memsser la dibsection avec un alpha 50% avant de faire le trucstexte et assurez-vous que le BKColor est noir. Je ne sais pas ce que le tructexte pourrait bien faire sur le canal alpha. Certaines expérimentations sont appelées. P>
Merci pour votre réponse.Je avez utilisé cette méthode.Utiliser ce texte est dessiné sur le rectangle de manière transparente. Mais je veux appliquer la transparence (alpha) au texte dessiné qui n'est pas possible à l'aide de la méthode de SettextColor. Comme SettextColor ignore la valeur alpha d'une couleur.Je ont suivi une application qui utilise un bitmap masque pour appliquer une transparence, mais je n'ai pas eu les résultats souhaités. Et je ne veux pas appliquer transparence au bitmap, je souhaite appliquer la transparence au texte tiré sur le bitmap. Toute aide est appréciée
Çnement d'une idée est, dessine sur un bitmap noir, pas un bitmap avec des informations encore. Après avoir blindé le texte, vous pouvez ensuite numériser le bitmap pour les pixels non noirs et régler le canal alpha pour chaque pixel sur la base de sa partie du texte.
hmmmm - essayant de faire la même chose ici - je vois que lorsque vous créez une section de DIB, vous spécifiez les "masques" qui sont un masque R, G, B (et alpha). P>
Si et c'est un gros s'il ne modifie pas vraiment l'alpha chhannel, vous pouvez spécifier le masque différemment pour deux en-têtes bitmap. On spécifie le THR RVB dans les endroits appropriés, l'autre les fait tous avoir leurs bits attribués au canal alpha. (Définissez la couleur du texte sur blanc dans ce cas) puis rendu en deux passes, une pour charger les valeurs de couleur, l'autre pour charger les valeurs alpha. P>
???? Quoi qu'il en soit, juste la raison :) p>
Bien que cette question consiste à faire du texte semi-transparent, j'ai eu le problème opposé. P>
tire-poste était em> faisant le texte dans ma fenêtre en couches (UpdateLayeredWindow) semi-transparent ... et je ne voulais pas que ce soit. p>
Regardez cet autre Question ... depuis dans l'autre question que je poster Quelqu'un code que vous pourriez facilement modifier ... et est presque exactement ce que Chris BeCke suggère dans sa réponse. P>
solution simple et facile :) p>
Avait ce problème, j'ai essayé de changer de valeurs alpha et de prémultiplier, mais il y avait un autre problème - des polices antialiasées et ClearType où ne figurent pas correctement (bords laids). Alors qu'est-ce que j'ai fait ... p>
Je pense que vous l'avez eu :) p>
Une réponse limitée pour une situation spécifique: p>
Si vous avez un graphique avec un canal alpha et que vous souhaitez dessiner du texte opaque sur un fond opaque localement, préparez d'abord votre feuille bitmap 32 bits avec des brosses 32 bits créées avec créateibpatternBrushpt code>. Ensuite, numérisez via les bits bitmap Inverser le canal alpha, dessinez votre texte comme vous le feriez normalement (y compris
SetBkmode code> sur
transparent code>), puis invert l'alpha dans le bitmap. Vous pouvez ignorer la première inversion si vous inverser l'alpha de vos pinceaux. P>
Langue préférée? C, c ++, vb.net, c # ??
Préféré sera une simple windows api / c ++