Dessiner rectangle de selection dans pictureBox [Résolu]

vboussema 138 Messages postés mercredi 1 février 2006Date d'inscription 1 septembre 2009 Dernière intervention - 1 févr. 2008 à 12:30 - Dernière réponse : vboussema 138 Messages postés mercredi 1 février 2006Date d'inscription 1 septembre 2009 Dernière intervention
- 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

vboussema 138 Messages postés mercredi 1 février 2006Date d'inscription 1 septembre 2009 Dernière intervention - 2 févr. 2008 à 12:46
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de vboussema
sebmafate 4947 Messages postés lundi 17 février 2003Date d'inscription 14 février 2014 Dernière intervention - 1 févr. 2008 à 13:55
0
Utile
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
vboussema 138 Messages postés mercredi 1 février 2006Date d'inscription 1 septembre 2009 Dernière intervention - 1 févr. 2008 à 20:03
0
Utile
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
vboussema 138 Messages postés mercredi 1 février 2006Date d'inscription 1 septembre 2009 Dernière intervention - 1 févr. 2008 à 21:09
0
Utile
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.