Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Backcolor et transparence [ Windows / UserControl ] (LordOfTheShadow)

samedi 22 novembre 2008 à 19:32:27 | Backcolor et transparence

LordOfTheShadow

Bonsoir,

J'ai fait un usercontrol sur lequel je dessine sur une petite partie seulement grâce à lévènement Onpaint. Le reste de mon composant je lui met la couleur Transparent en BackColor ce qui fait que la partie où je ne dessine pas est transparente. Après...lorque j'utilise ce composant sur un formulaire, je dois le mettre à cheval sur un autre composant (ex: PictureBox avec un fond bleu). Mon problême c'est que la transparence montre la couleur de fond du formulaire et non le fond de la picturebox. Si quelqu'un pourrait me donner un code ou alors un peu d'aide je le remercierai bien. A bientot.

La connaissance est la plus grande des richesses.


samedi 22 novembre 2008 à 21:28:12 | Re : Backcolor et transparence

Lutinore

Administrateur CodeS-SourceS

Salut.. c'est plus simple avec un Control qu'un UserControl :

 

public partial class Form1 : Form
{
    private class MyControl : Control
    {
        protected override CreateParams CreateParams
        {
            get
            {
                CreateParams cp = base.CreateParams;
                cp.ExStyle |= 0x00000020; // WS_EX_TRANSPARENT;
                return cp;
            }
        }

        protected override void OnPaintBackground( PaintEventArgs args )
        {
            //base.OnPaintBackground( args );

            Graphics g = args.Graphics;
            Rectangle r = this.ClientRectangle;
            g.DrawRectangle( Pens.Black, new Rectangle( 0, 0, r.Width - 1, r.Height - 1  ) );
            g.FillRectangle( new SolidBrush( Color.FromArgb( 128, Color.Red ) ), r );
        }
       
    }

    public Form1( )
    {
        InitializeComponent( );

        PictureBox pb = new PictureBox( );
        pb.Size = new Size( 100, 100 );
        pb.BackColor = Color.AliceBlue;
        pb.BorderStyle = BorderStyle.FixedSingle;

        MyControl mc = new MyControl( );
        mc.Size = new Size( 100, 100 );
        mc.Location = new Point( 50, 50 );

        this.Controls.AddRange( new Control[ ] { mc, pb } );
    }
}


dimanche 23 novembre 2008 à 19:31:51 | Re : Backcolor et transparence

LordOfTheShadow

Si je comprends bien tu surchages (=overrride?) la méthode onPaint qui est herité de la classe mère? Je vais eesayer dès demain soir car là j'ai les yeux qui me piquent à mort . Merci à toi Lutinore.

La connaissance est la plus grande des richesses.


mercredi 26 novembre 2008 à 11:50:02 | Re : Backcolor et transparence

LordOfTheShadow

Désolé Lutinore ça ne marche pas...Heu je fais un usercontrol et non un control car je suis obligé. J'ai cherché et trouvé des aides mais sans résultat probant (transparencyKey(affiche le form et non le picture box en dessous), makeTransparent (que sur les bitmaps...) et Opacity (rend transparent mais le résultat est pareil que sur transparencyKey et en plus cette propriété n'existe pas dans un usercontrol mais sur le form uniquement).

La connaissance est la plus grande des richesses.


mercredi 26 novembre 2008 à 14:27:56 | Re : Backcolor et transparence

Lutinore

Administrateur CodeS-SourceS
Réponse acceptée !

Modifié pour un UserControl, tu peux voir le résultat >ici<

private class MyControl : UserControl
{
    public MyControl( ) : base( )
    {
        this.SetStyle( ControlStyles.UserPaint |
            ControlStyles.AllPaintingInWmPaint, true );
    }

    protected override CreateParams CreateParams
    {
        get
        {
            CreateParams cp = base.CreateParams;
            cp.ExStyle |= 0x00000020; // WS_EX_TRANSPARENT;
            return cp;
        }
    }

    protected override void OnPaintBackground( PaintEventArgs args )
    {
        //base.OnPaintBackground( args );

        Graphics g = args.Graphics;
        Rectangle r = this.ClientRectangle;
        g.DrawRectangle( Pens.Black, new Rectangle( 0, 0, r.Width - 1, r.Height - 1  ) );
        g.FillRectangle( new SolidBrush( Color.FromArgb( 128, Color.Red ) ), r );
    }
}




Cette discussion est classé dans : composant, fond, dessine, transparence, backcolor


Répondre à ce message

Sujets en rapport avec ce message

DirectX (D3D) transparence [ par clemox ] Bonsoir :)  Ceux qui fond du directX ont pu se rendre compte que directdraw va bientôt disparaître du SDK ... C'est pourtant bien pratique pour faire Transparence partielle (Form.BackColor = Color.Transparent) [ par DarkenerDaemonEx ] Bonjour, j'ai un problème avec le constructeur d'un form dont la transparence sera (ou plutôt, devra être) partielle et différente "pour chaque pixel" DrawEllipse avec fond transparent [ par babou6a ] Bonjour,j'essaye de refaire une sorte de paint. Mon programme marche bien mais avec quelques souci graphique : si je dessine un carré plein sur la zon composant [ par AXELMEDICAL ] salut! j'ai créer une application! je voudrais savoir comment connaitre les composants dont celle ci a besoin pour tourner,(et ou dois les copier) sur Créer une image à partir d'un controle [ par bossun ] Salut,Je voudrais créer une image depuis un controle et l'exporter dans un jpg, bmp, ou png (c'est égal)Dans mon cas il s'agit d'un graphique créé à p [help] Probleme avec l'évenement d'un composant [ par nono1664 ] Bonjour, Je dévellope ces temps ci des composants et donc j'ai du créé des évenements mais mon problème est que c'est evenement peuve etre utilisé que Composant référencé introuvable ... [ par LocalStone ] Bonjour ! Alors j'ai un problème qui, à mon avis possède une solution toute bête, mais je ne trouve pas ...J'ai télécharger un projet qui utilise Dire "fond d'ecran" [ par cudenetf ] bonjour,j'aimerais si possible avoir un logo en fond  d'ecran quelque soit le formulaire (ou control qui passe dessus)en fait j'aimerais que ce soit t [C#][ActiveX]Utiliser un ActiveX en dehors d'un Form [ par bz_spi ] Bonjour,  Je voudrais utiliser un composant ActiveX (Helix Producer dans mon cas) en dehors d'un Form, en effet, je ne veux me servir que des fonction dégradé [ par cudenetf ] Bonjour,j'aimerais faire un dégradé animé,par exemple sur un panel.J'ai donc une fonction qui peint le degradé  Paint( Lineargradient brush ....) et j


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,218 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.