Dessiner rectangle de selection dans pictureBox [Résolu]

Messages postés
138
Date d'inscription
mercredi 1 février 2006
Dernière intervention
1 septembre 2009
- - Dernière réponse : vboussema
Messages postés
138
Date d'inscription
mercredi 1 février 2006
Dernière intervention
1 septembre 2009
- 2 févr. 2008 à 12:46
salut
j'aime dessiner un rectangle de selection sur un PictureBox situé dans un panel
et j'aime que la selection ne dépasse pas le picture box donc la méthode drowreversibleFrame ne marche pas(sinon avec modification)
et par la suite je veut que ce rectangle soi persistant jusqu'a le prochain click ;)
(et bien sure ne disparet pas si une forme vient audessus de celle ci)
merci pour l'aide

//as you like
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
Messages postés
138
Date d'inscription
mercredi 1 février 2006
Dernière intervention
1 septembre 2009
3
Merci
j'ai fait une classe qui illustre sa
;)
http://www.csharpfr.com/codes/PETITE-CLASSE-DESSINER-RECTANGLE-SELECTION-DANS-PICTUREBOX_45605.aspx

//as you like

Merci vboussema 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 98 internautes ce mois-ci

Commenter la réponse de vboussema
Messages postés
4947
Date d'inscription
lundi 17 février 2003
Dernière intervention
14 février 2014
0
Merci
il faut que tu fasses cela dans l'évènement OnPaint du PictureBox.

Utilise la méthode ControlPaint.DrawFocusRectangle()

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
Commenter la réponse de sebmafate
Messages postés
138
Date d'inscription
mercredi 1 février 2006
Dernière intervention
1 septembre 2009
0
Merci
salut;
merci pour la réponse je vai essayer mais je pense pas que sa va résoudre le problème mais éspérons bien que sa marche car il paret que toutes les méthodes de controlpaint déssine sur l'ecran et pas sur un control

//as you like
Commenter la réponse de vboussema
Messages postés
138
Date d'inscription
mercredi 1 février 2006
Dernière intervention
1 septembre 2009
0
Merci
j'ai pas pu faire marcher ce truc en fait il ne dessine pas comme je veut si tu peut me donner un bout de code :(
privatebool _selecting = false;
private Point _selectionStartPoint = Point.Empty;
private Point _selectionEndPoint = Point.Empty;
private Rectangle _selectionRect = Rectangle.Empty;
 
// private Point _LastPoint = Point.Empty;
public Rectangle _LastselectionRect = Rectangle.Empty;
private Point _laststrart = Point.Empty;
private Point _lastend = Point.Empty;

protectedoverridevoid OnMouseDown(MouseEventArgs e)
{
base.OnMouseDown(e);
 
if(e.Button == MouseButtons.Left)
{

this.Invalidate();
this._selecting = true;
//pour lecran
this._selectionStartPoint = this.PointToScreen(new Point(e.X, e.Y));
this._selectionEndPoint = Point.Empty;
this._selectionRect = Rectangle.Empty;

//pour le last ;)
_laststrart = new Point(e.X, e.Y);//les vrai valeures ;)
_lastend = Point.Empty;
_LastselectionRect = Rectangle.Empty;
}

}
 
protectedoverridevoid OnMouseMove(MouseEventArgs e)
{
base.OnMouseMove(e);
 
if(this._selecting)//pour dessiner le rect

{
//effacer le last
ControlPaint.DrawFocusRectangle(this.CreateGraphics(), _LastselectionRect, Color.Red, Color.Transparent);
// 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
);
// calcul du nouveau rectangle vrai ;)
_lastend =new Point(e.X, e.Y);
_LastselectionRect = new Rectangle(
_laststrart.X,
_laststrart.Y,
_lastend.X - _laststrart.X,
_lastend.Y - _laststrart.Y
);
////pour le rectangle de selection
//Graphics g = this.CreateGraphics();//.Graphics;
//Rectangle inner = _selectionRect;
//inner.Inflate(-2, -2);
//ControlPaint.DrawSelectionFrame(g, false, _selectionRect, inner, Color.Transparent);
// dessin du nouveau rectangle
//ControlPaint.DrawReversibleFrame(this._selectionRect, this.BackColor, SELECTION_STYLE);
//pour le focus
ControlPaint.DrawFocusRectangle(this.CreateGraphics(), _LastselectionRect, Color.Red, Color.Transparent);
}
}
 
protectedoverridevoid OnMouseUp(MouseEventArgs e)
{
base.OnMouseUp(e);
 
if((this._selecting))
{
// efface le rectangle de sélection
//ControlPaint.DrawReversibleFrame(this._selectionRect, this.BackColor, SELECTION_STYLE);
//ControlPaint.DrawReversibleFrame(this._selectionRect, this.BackColor, SELECTION_STYLE);
ControlPaint.DrawFocusRectangle(this.CreateGraphics(),_LastselectionRect, Color.Red, this.BackColor);
_LastselectionRect = _selectionRect;

 

}

this._selecting = false;

}

 seci ne marche pas aussi
il ne dessine rien
et quand je fait drawselectionframe il y a un movais affichage car il y a une suite de rectangle en plus la selection n'est pas inversibe donc comment gérer sa???
si vous pouvez me donner un bout de code car je parvient pas a résoudre ça et merci [auteur/SEBMAFATE/53675.aspx sebmafate]

//as you like
Commenter la réponse de vboussema

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.