Bubuss
Messages postés147Date d'inscriptionsamedi 7 juin 2003StatutMembreDernière intervention 8 décembre 2007
-
15 mars 2007 à 15:31
Bubuss
Messages postés147Date d'inscriptionsamedi 7 juin 2003StatutMembreDernière intervention 8 décembre 2007
-
16 mars 2007 à 16:15
Bonjour, voilà je suis pas le premier ni le dernier à me confronter à la movaise gestion de la transparence dans C#
J'ai fabriqué un composant qui se génère graphiquement lui même et j'ai de temps à autre besoin de générer un control avec un Alpha < 255
Cet élément est draggable et je n'arrive pas à surcharger correctement la méthode paint pour définir sa transparence avec les autres controls (qui sont générés eux aussi dynamiquement).
SolidBrush objB = new SolidBrush(Color.FromArgb(100, base.BackColor));
Bitmap TempImage = new Bitmap(this.Width, this.Height);
Bubuss
Messages postés147Date d'inscriptionsamedi 7 juin 2003StatutMembreDernière intervention 8 décembre 2007 15 mars 2007 à 21:36
Oué j'avais vu cette source et je m'en suis inspiré mais ça ne fonctionne pas vraiment (j'ai des contraintes techniques et je suis en .Net 1.1 ceci peu peut être expliquer celà).
Merci quand même
Je me demande maintenant si il serait possible d'utiliser DirectX et d'appliquer des effets comme la transparence à des controls à travers DirectX ?
Lutinore
Messages postés3246Date d'inscriptionlundi 25 avril 2005StatutMembreDernière intervention27 octobre 201241 16 mars 2007 à 01:04
Salut, DirectX ne t'aidera pas sur ce coup là, il ne gère pas du tout les contrôles Windows.. Et si il s'agit d'appliquer de l'alpha blending sur un bitmap, GDI+ c'est très bien le faire.
Ce genre de contrôle marche bien pour la transparence par contre quand ça bouge ça scintille..
public class TransparentControl : Control
{
private const int WM_NCHITTEST = 0x84;
private const int WS_EX_TRANSPARENT = 0x20;
private Pen p = new Pen( Color.Black, 8.0f );
private Brush b = new SolidBrush( Color.FromArgb( 160, 0, 255, 0 ) );