begin process at 2010 02 10 11:27:55
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C#

 > 

Archives

 > 

.NET

 > 

Dessiner rectangle de sélection


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

Dessiner rectangle de sélection

mercredi 18 janvier 2006 à 15:42:12 | Dessiner rectangle de sélection

jesaipa_1

Slt a tous je voualis savoir cmt fait-on enfin cmt sappel la fonction qui dessine le rectangle en pointillé kan on selection un truc sur une page com en dessous :



Merci
mercredi 18 janvier 2006 à 15:45:55 | Re : curseur souris

nicompx

Est-ce que tu peux être plus précis stp. >> NiCoMpX <<
mercredi 18 janvier 2006 à 15:49:38 | Re : curseur souris

MorpionMx

Membre Club Administrateur CodeS-SourceS
Salut

On ne peut pas voir ton image, car elle est en local sur ton ordinateur.
Je te demanderais aussi un effort sur la structure de ta phrase, le langage sms est proscrit sur ce forum.


Mx
MVP C#
 

mercredi 18 janvier 2006 à 15:55:32 | Re : curseur souris

nicompx

Aujourd'hui, tout le monde mes des images invisible.... lol >> NiCoMpX <<
mercredi 18 janvier 2006 à 17:08:44 | Re : curseur souris

jesaipa_1

ok je vais faire un effort sur mon ecriture donc je voulais savoir :

j'ai sur mon formulaire plusieurs panel l'un en dessous de l'autre (vous voyez comment )
je voudrais faire une selection en tenant le click gauche de ma souris et en descendant

(c'est comme sur le bureau quand on tient le click gauche et on descend ya un rectangle en pointillé qui apparait )

je voudrais faire la même chose.

Si j'ai pas encore était claire n'hesité pas à me poser des questions.

Merci.
jeudi 19 janvier 2006 à 00:42:19 | Re : curseur souris

Lutinore

Administrateur CodeS-SourceS
Réponse acceptée !

Salut, voilà un exemple rudimentaire pour dessiner une sélection sur ta forme, après par exemple tu peux tester si ton contrôle est contenu dans la sélection avec la méthode Rectangle.Contains.




public partial class Form1 : Form
{
    private bool down = false;
    private Pen pen = null;
    private int x = 0;
    private int y = 0;
    private int w = 0;
    private int h = 0;

    public Form1( )
    {
        InitializeComponent( );

        this.SetStyle
        (
            ControlStyles.UserPaint |
            ControlStyles.AllPaintingInWmPaint |
            ControlStyles.DoubleBuffer,
            true
        );

        pen = new Pen( Color.Black );
        pen.DashStyle = DashStyle.Dash;
    }

    protected override void OnMouseDown( MouseEventArgs e )
    {
        // base.OnMouseDown( e );

        x = e.X;
        y = e.Y;
        down = true;
    }

    protected override void OnMouseUp( MouseEventArgs e )
    {
        // base.OnMouseUp( e );

         down = false;
         Invalidate( this.ClientRectangle ); // Efface la séléction.
    }

    protected override void OnMouseMove( MouseEventArgs e )
    {
        // base.OnMouseMove( e );

        if ( down )
        {
            w = e.X - x;
            h = e.Y - y;
            Invalidate( this.ClientRectangle ); // Dessine la séléction.
        }
    }

    protected override void OnPaint( PaintEventArgs e )
    {
        // base.OnPaint( e );

        Graphics g = e.Graphics;

        if ( down )
        {
            g.DrawRectangle( pen, x, y, w, h );
        }
    }
}

vendredi 20 janvier 2006 à 09:14:05 | Re : curseur souris

jesaipa_1

Lutinore merci pour ce script mais il y a juste une petite erreur sur sa (enfin sa me génère une petite erreur)

pen.DashStyle = DashStyle.Dash;

Le DashStyle.Dash il ne le reconnait pas

vendredi 20 janvier 2006 à 09:38:21 | Re : curseur souris

jesaipa_1

dsl j'avais oublier de mettre using System.Drawing.Drawing2D;

Merci pour ce code
jeudi 2 février 2006 à 16:18:47 | Re : curseur souris

coq

Administrateur CodeS-SourceS
Réponse acceptée !

Salut,

Bon, j'arrive après la bataille mais mieux vaut tard que jamais ^^

L'inconvénient avec la méthode citée plus haut est quand même que le trait de sélection n'est pas dessiné sur les contrôles enfants.
Pour celà notre ami le Framework contient la classe ControlPaint et sa méthode DrawReversibleFrame :-)

        private bool _selecting = false;
        private Point _selectionStartPoint = Point.Empty;
        private Point _selectionEndPoint = Point.Empty;
        private Rectangle _selectionRect = Rectangle.Empty;
       
        private const FrameStyle SELECTION_STYLE = FrameStyle.Dashed;

        protected override void OnMouseDown(MouseEventArgs e)
        {
            base.OnMouseDown (e);

            if ( e.Button == MouseButtons.Left )
            {
                this._selecting = true;
                this._selectionStartPoint = this.PointToScreen(new Point(e.X, e.Y));
                this._selectionEndPoint = Point.Empty;
                this._selectionRect = Rectangle.Empty;
            }
        }

        protected override void OnMouseMove( MouseEventArgs e )
        {
            base.OnMouseMove( e );

            if ( this._selecting )
            {
                // efface le rectangle de sléection précédent
                ControlPaint.DrawReversibleFrame(this._selectionRect, this.BackColor, SELECTION_STYLE);

                // calcul du nouveau rectangle
                this._selectionEndPoint = this.PointToScreen(new Point(e.X, e.Y));
                this._selectionRect = new Rectangle(
                    this._selectionStartPoint.X,
                    this._selectionStartPoint.Y,
                    this._selectionEndPoint.X - this._selectionStartPoint.X,
                    this._selectionEndPoint.Y - this._selectionStartPoint.Y
                    );

                // dessin du nouveau rectangle
                ControlPaint.DrawReversibleFrame(this._selectionRect, this.BackColor, SELECTION_STYLE);
            }
        }

        protected override void OnMouseUp( MouseEventArgs e )
        {
            base.OnMouseUp( e );

            if ( this._selecting )
            {
                // efface le rectangle de sélection
                ControlPaint.DrawReversibleFrame(this._selectionRect, this.BackColor, SELECTION_STYLE);
            }

            this._selecting = false;
        }




/*
coq
MVP Visual C#
*/

jeudi 2 février 2006 à 18:45:03 | Re : curseur souris

Lutinore

Administrateur CodeS-SourceS
J'ai précisé que c'était un exemple rudimentaire  

C'était surtout pour montrer le principe de l'utilisation du MouseDown, MouseMove et MouseUp pour dessiner une sélection.

Ton code est vraiment mieux, d'ailleurs je connaissais même pas DrawReversibleFrame et même en lisant la définition je crois que j'aurais pas deviné à quoi ça servait :P

1 2

Cette discussion est classée dans : sélection, cmt, rectangle, dessiner


Répondre à ce message

Sujets en rapport avec ce message

Dessiner un simple rectangle [ par Yoteco ] Bonjour, J'aimerais dessiner un simple rectangle au centre de ma fenêtre qui mesure 300 x 300 pixels Mais je n'y arrive pas !!! voici mon code:    dessiner un rectangle sur les controles [ par LeGnuff ] Bonjour !j'ai un objget Graphics associé à une formj'aurais aimé savoir s'il y avait un moyen d'utiliser la méthodeGraphics.DrawRectangle(...) en fais dessiner rectangle de selection dans pictureBox [ par vboussema ] salutj'aime dessiner un rectangle de selection sur un PictureBox situé dans un panelet j'aime que la selection ne dépasse pas le picture box donc la m problème dans le dessin d'un rectangle [ par vboussema ] je veut dessiner un rectangle de selectionaprès détecter les positions du rectangle par le mousemove et mouse down je fait un overrde pour la méthode dessiner un rectangle [ par messa123 ] je veut savoir comment dessiner un rectangle et un ellipse dans une forme l'orsqu'on clique sur la formerepondez moi s.v.pmerci DESSINER plusieus rectangle dans un panel et qui sont aligné verticalement [ par fayrous ] salut, dans ma form j'ai seulement une panel à l'éxècution il m'a affiche que seulement un rectangle et l'éxècution ne s'arrête pas. voila le code dessiner en c# [ par baby85 ] salut,je veux dessiner un rectangle et dans ce rectangle je veux desssiner une cercle de rayon r et des cordonnée a,bmon prbleme est je veux dessiner dessiner fleche en c# [ par baby85 ] salut,je veux savoir comment je peux dessiner une fleche en c#Merci d'avance dessiner sur un graphe [ par adsana ] bonjourje suis entrain de faire un code qui simule un réseau et affiche le schéma du réseau sous forme d'une image bitmap.mais comme j'ai besoin d'agi Comment savoir si 2 rectangle se touche? [ par kingb330 ] Bonsoir,Comme projet final pour mon cours de programmation, je fais un petit jeu en c#.Mon jeu est en quelque sorte un Frogger version simplifié.Mon p


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,624 sec (3)

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