begin process at 2010 02 09 21:29:15
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C#

 > 

Multimédia

 > 

Image et Vidéo

 > 

Transparence de 2 pictureBox


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Transparence de 2 pictureBox

mardi 31 juillet 2007 à 14:22:45 | Transparence de 2 pictureBox

joecoolups

Bonjour Mon probleme est le suivant:
est il possible d'avoir 2 picturebox (un grand et un petit), l'un sur l'autre (le petit sur le grand), de définir une couleur de transparence sur le petit (magenta par exemple) et d'afficher l'ensemble, je peux ainsi balader avec la souris mon petit picturebox avec la souris en gardant l'effet de transparence. Pour le moment si je fais ça, le magenta prend la couleur de la fenetre principale.
Avez vous une idée ?
Je passe par des pictureBox car c'est plus facile à gérer et a créer dynamiquement. Si non je pense passer par un Buffer Bitmap et gérer moi meme les pixels et les evenements souris. Qu'en pensez vous ? autre solution ?

Merci
Sephiro

mardi 31 juillet 2007 à 16:28:35 | Re : Transparence de 2 pictureBox

Lutinore

Administrateur CodeS-SourceS

Salut, utilises ce genre de contrôle, qui gère la vraie transparence à la place de la 2ème PictureBox :





class TransparentControl : Control
{
    private const int WS_EX_TRANSPARENT = 0x00000020;

    public TransparentControl( ) : base( )
    {
    }
   
    protected override CreateParams CreateParams
    {
        get
        {
            CreateParams cp = base.CreateParams;
            cp.ExStyle |= WS_EX_TRANSPARENT;
            return cp;
        }
    }
   
    protected override void OnPaintBackground( PaintEventArgs e )
    {
    }
   
    protected override void OnPaint( PaintEventArgs e )
    {
        //base.OnPaint( e );

        Rectangle bounds = new Rectangle( 0, 0, this.Width - 1, this.Height - 1 );
        e.Graphics.DrawRectangle( Pens.Black, bounds );
    }
}

mardi 31 juillet 2007 à 16:57:50 | Re : Transparence de 2 pictureBox

Lutinore

Administrateur CodeS-SourceS

Sinon sans contrôle ( si j'ai bien compris ce que tu veux faire ) :




public partial class Form1 : Form
{
    PictureBox pb = null;
    Bitmap bmp = new Bitmap( "C:\\untitled.bmp" ); // Pour l'exemple.

    public Form1( )
    {
        InitializeComponent( );
        this.Size = new Size( 640, 480 );

        pb = new PictureBox( );
        pb.Parent = this;
        pb.Size = new Size( 400, 400 );
        pb.Location = new Point( 20, 20 );
        pb.Image = bmp;

        pb.MouseMove += delegate ( object sd, MouseEventArgs args )
        {
            pb.Invalidate( pb.ClientRectangle );
        };

        pb.Paint += delegate ( object sd, PaintEventArgs args )
        {
            Point pos = pb.PointToClient( Cursor.Position );

            if ( pb.ClientRectangle.Contains( pos ) )
            {
                Graphics g = args.Graphics;
                g.DrawImage( bmp, pos.X, pos.Y, 100, 100 );
                g.DrawRectangle( Pens.Black, pos.X, pos.Y, 100, 100 );
            }
        };
    }
}

mardi 31 juillet 2007 à 18:15:28 | Re : Transparence de 2 pictureBox

sephiro

Membre Club
ta réponses m'interresse mais je débute en C# et je ne comprends pas comment utiliser ton controle TransparentControl

Sephiro
mardi 31 juillet 2007 à 19:52:48 | Re : Transparence de 2 pictureBox

Lutinore

Administrateur CodeS-SourceS
C'est un contrôle comme une autre..

par exemple tu le crées dans le constructeur de ta forme comme ça :


TransparentControl ctrl = new TransparentControl( );
ctrl.Size = new Size( 100, 100 );
ctrl.Location = new Point( 10, 10 );
ctrl.Parent = this; // Attention qu'il ne soit pas en-dessous d'un autre contrôle.

Pour l'exemple dans sa méthode OnPaint, il ne fait rien d'autre que de dessiner un cadre noir au tour de lui sinon il serait totalement transparent mais tu peux très bien dessiner une image avec la méthode DrawImage.
mercredi 1 août 2007 à 11:46:17 | Re : Transparence de 2 pictureBox

sephiro

Membre Club

Bonjour, voici la methode que j'ai utilisé:
Dans l'evenement Paint, je liste les controls de type PictureBox du Parents
foreach (Control MyControl inthis.Parent.Controls )
pour chaque Pixel magenta de mon Bitmat je recherche la couleur du pixel du control en dessous,je le remplace dans mon Bitmap par un setpixel.
puis j'affiche mon PictureBox avec le bitmap modifié
pour le moment je travail par getpixel et setpixel mais je vais optimiser par des pointeur.
Merci pour ton aide Lutinore
Sephiro

mercredi 1 août 2007 à 12:31:24 | Re : Transparence de 2 pictureBox

Lutinore

Administrateur CodeS-SourceS
Si tu débutes en C#, les pointeurs ça ne va pas être simple. Peux tu me faire une capture d'écran  de ce que tu veux vraiment faire, car à mon avis il y'a moyen de se passer des picturesbox et des pointeurs. ( heberger l'image  sur hiboox.com ou imageshack.us par exemple ).
jeudi 2 août 2007 à 09:32:30 | Re : Transparence de 2 pictureBox

sephiro

Membre Club
Bonjour Je n'aurais pas de probleme avec les pointeurs, je débute en C# mais je fais du C/C++ Win32 depuis 15 ans. Mon approche du C# n'est pas bonne j'ai trop de reflexes C++, ton code va me permettre de travailler plus proprement avec des notion d'evenement dans mes objects. Merci pour ton aide Sephiro
mardi 7 août 2007 à 14:18:50 | Re : Transparence de 2 pictureBox
mercredi 8 août 2007 à 13:44:57 | Re : Transparence de 2 pictureBox


Cette discussion est classée dans : couleur, picturebox, souris, grand, transparence


Répondre à ce message

Sujets en rapport avec ce message

[WinForm] [PictureBox] transparence [ par stailer ] Salut tout le monde,J'ai un problème avec les PictureBox :Je mets un picturebox sur une form avec une image... Je rajoute un picturebox avec comme bac [c#] Redimensionner une image à l'aide de la souris [ par Ninounette ] Bonjour à tous! Le titre n'est peut-être pas très parlant mais je vous explique: je dispose d'un panel dans lequel se trouve une picturebox. Dans cel [C#]Offset souris / image dans pictureBox [ par fcolo ] Bonjour,Je souhaiterai connaitre la position X/Y du pointeur de la souris par rapport à l'image contenu dans une pictureBox.En fait la position relati PNG transparent et windows CE [ par leprov ] salut a tous. je dois actuellement développer une application fortement graphique sous windows CE. Les contraintes graphiques nous "obligent" a utilis Picturebox : image + couleur transparente [ par brixi69 ] Bonjour !J'ai beau cherché une solution à mon problème mais en vain et pourtant ca doit être tout simple.Admettons que j'ai une "Form" avec une backgr PictureBox sur Pocket PC [ par wald39 ] Bjr à tous.J'aimerais afficher une image ronde avec les tours transparents dans une picturebox, je pense qu'il faut redessiner l'image sur la pictureb PictureBox, transparence. [ par Cookiem ] Lorsqu'on crée un picture box avec une image contenant des zone transparente (gif animé),Il affiche l'image avec  les zone transparente de la couleur tracer sur picturebox en deplacant la souris [ par olibara ] BonjourJe pensait avec un peu de reflexion resoudre un probleme certainement bien connu.Mais ca ne semble pas si simpleJe fais donc appel a l'experien Coordonée de Mouse dans picturebox [ par olibara ] BonjourComment puis-je recuperer les coordonnées XY de la souris sur un PictureBox dans une form ??J'utilise un Timer eventMais j'aimerais avoir la po Mouse hover sur picturebox (detection repos de la souris) [ par olibara ] Bonjour J'essaye de comprendre l'evenement mouse hover sur un pictureboxDans un premier temps, j'avais cru que l'event se déclenchait quant on arret


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,312 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales