begin process at 2010 02 10 12:03:57
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C#

 > 

Multimédia

 > 

Image et Vidéo

 > 

Couleur sélection en fonction de l'arrière plan


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

Couleur sélection en fonction de l'arrière plan

mercredi 8 août 2007 à 14:52:04 | Couleur sélection en fonction de l'arrière plan

ArnaudEIC

Bonjour,

j'ai un picturebox dans lequel je souhaite que l'on puisse faire une zone de sélection. Pour dessiner la zone de sélection je fais simplement un "DrawRectangle" avec un "pen" dont je précise dans le style que c'est en pointillé.
Le problème c'est que j'aimerai que la couleur change en fonction de l'image qu'il y a en arrière-plan. Comme dans Paint par exemple, les pointillés passent de noir à gris à blanc selon la couleur qu'il y a derrière, pour que cela sois toujours bien visible.
Quelqu'un a une idée de comment faire ça ?
merci d'avance
mercredi 8 août 2007 à 15:03:29 | Re : Couleur sélection en fonction de l'arrière plan

Lutinore

Administrateur CodeS-SourceS

Salut,





ControlPaint.DrawReversibleFrame( .. )

mercredi 8 août 2007 à 16:07:59 | Re : Couleur sélection en fonction de l'arrière plan

ArnaudEIC

Salut,
J'avais effectivement trouvé un exemple qui utilisai cette fonction dans le lien suivant
Après j'utilise peut être mal la fonction mais si je l'utilise sur le MouseMove, la zone de sélection que je dessine disparai dès que qu'une autre fenêtre ou appli se met devant, et si je l'utilise sur le Paint c'est pareil mais en plus de cela ça cligonte.
Quand j'utilise le DrawRectangle cela dessine directement sur le graphics donc je me dis que c'est pour ça que dans ce cas la le rectangle reste..
jeudi 9 août 2007 à 15:40:33 | Re : Couleur sélection en fonction de l'arrière plan

Lutinore

Administrateur CodeS-SourceS

Comme ça par exemple..




public partial class Form1 : Form
{
    private PictureBox pb = null;
    private Point start = Point.Empty;
    private Point end = Point.Empty;
    private Rectangle frame = Rectangle.Empty;
    private bool draw = false;
   
    public Form1( )
    {
        InitializeComponent( );

        pb = new PictureBox( );
        pb.Parent = this;
        pb.Dock = DockStyle.Fill;
        pb.SizeMode = PictureBoxSizeMode.StretchImage;
        pb.Image = this.Icon.ToBitmap( ); // pour l'exemple.

        pb.MouseDown += delegate( object sd, MouseEventArgs args )
        {
            if ( args.Button == MouseButtons.Left )
            {
                draw = true;
                start = pb.PointToScreen( args.Location );
            }
        };

        pb.MouseUp += delegate( object sd, MouseEventArgs args )
        {
            draw = false;
        };

        pb.MouseMove += delegate( object sd, MouseEventArgs args )
        {
            if ( draw )
            {
                end = pb.PointToScreen( args.Location );

                ControlPaint.DrawReversibleFrame
                (
                    frame, Color.Black, FrameStyle.Dashed
                );

                frame = new Rectangle
                (
                    start.X, start.Y, end.X - start.X, end.Y - start.Y
                );

                ControlPaint.DrawReversibleFrame
                (
                    frame, Color.Black, FrameStyle.Dashed
                );
            }
        };
    }
}

jeudi 9 août 2007 à 16:00:42 | Re : Couleur sélection en fonction de l'arrière plan

ArnaudEIC

Tout d'abord merci beaucoup pour ta réponse !

Ensuite, j'ai recopié ton exemple ( j'avais fais a peu près le même en fait ) et il a les même sympthome que mon exemple.
C'est a dire que si je bouge ma fenêtre ou si je met une autre fenêtre devant et fais réapparaitre ma fenêtre, ma zone de sélection n'est plus affichée.
Il y a peut être quelque chose que je fais mal mais sur mon poste cela fais ça.
vendredi 10 août 2007 à 03:35:42 | Re : Couleur sélection en fonction de l'arrière plan

Lutinore

Administrateur CodeS-SourceS

Oui exact.. comme tu le sais surement les dessins de GDI+ ( System.Drawing ) ne sont pas persistants, il faut dessiner dans l'évènemment Paint ( OnPaint ) pour que les dessins soient re-dessiner à chaque fois que c'est nécessaire.. Mais malgré ça, là y'a un effet de bord assez génant avec la fonction DrawReversibleFrame, le code devient vite inutilement compliqué juste pour une petite selection, ( j'ai pas insité, dsl ) Finalement dessiner directement un rectangle en pointillé dans le OnPaint de la PictureBox c'était peut être pas si mal. : ) Si ça clignotte, utilise un double buffer.

vendredi 10 août 2007 à 14:19:07 | Re : Couleur sélection en fonction de l'arrière plan

ArnaudEIC

merci de ta réponse, surtout vu l'heure a laquel tu l'a écrite
J'avais effectivement compris pourquoi le dessins ne persistai pas.
C'est vrais que j'espérai trouver quelque chose au niveau du PEN ou du BRUSH et utiliser le drawrectangle tout simplement, mais apparement il n'y a rien.
Qu'entend tu par doucle buffer pour éviter le clignotement ?
dimanche 12 août 2007 à 23:32:50 | Re : Couleur sélection en fonction de l'arrière plan

ShareVB

salut,

double buffer : http://www.bobpowell.net/doublebuffer.htm

ShareVB


Cette discussion est classée dans : fonction, plan, couleur, sélection, zone


Répondre à ce message

Sujets en rapport avec ce message

ListView et couleur selection items [ par YLSEAGLE ] Bonjour à tous. Je cherche à changer la couleur de sélection d'un item dans une listview. Par défaut, celle ci est de couleur bleu avec le texte en bl extraction d'une zone d'une image [ par wenna ] salut je cherche un code c# qui permet d'extraire une zone à partir d'une image.l'image est constutiée des zones où le couleur des pixels sont noir et Changer la couleur de sélection d'un contrôle [ par taharban ] Bonjour,comment changer la couleur de l'item sélectionné dans une listbox ou combobox ?Par défault, l'item sélectionné est en bleu (par défaut sur mon pb de niveau z-order dans une appli MDI [ par Blacknight91 ] Bl@cknightBonjour, Dans une application MDI, je souhaite afficher une pictureBox et plusieurs fenêtres filles dans la zone MDI. La pictureBox se trouv Couleur de sélection d'une ListBox [ par Captain_Bomber ] Bonjour à tous et bonne année!!J'ai un petit (mais génant) problème :J'utilise une ListBox pour afficher des messages successifs.Afin que la ScrollBar TextBox to ListBox avec une fonction [ par renardo ] bonjour tt le mondeje debute dans le C# et joré voulu savoir si QQn aurait une fonction ajoutant le contenu d'une zone d'édition TextBox à une zone de fonction permettant de ne pas ecrire apostrophe dans une zone de texte [ par achraf66 ] y' a t-il qlq qui peur me dire quelle est la fonction qui permet de ne pas ecrire apostrophe dans unezone de textemerci pour tous fonction permettant de désactiver les caracteres sauf les numbers [ par achraf66 ] veuillez mesieurs de m'envoyer une fonction qui permet de taper seulement les numeros dans une zone de textemerci!!! Creer une zone graphic [ par revlis ] BonjourJe cherche a creer un Graphics au dessus de mon form pour y dessiner dedans...Exemples: -la liste d'une combobox-un menu contextuelsachant que couleur d'un label (C#) [ par speedus95 ] Je voudrais que mon label soit en bleu mais je connais pas le code : label.Forecolor puis je ne sais pas(je veut le faire pas le code)merci d'avance


Nos sponsors


Sondage...

Comparez les prix

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,468 sec (4)

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