salut
j'aime dessiner sur une forme qui contient un panel qui contient une picturebox un rectangle de selection de telle sorte que le rectangle ne paret que dans le panel et bien sure sur le pic
j'ai pu dessiner le rectangle de selection mais quand j'aime faire sa dans une form qui contient un panel sa marche pas(quand le debut de la selection est dans le panel)
donc il me faut koi???
je fait un controle qui hérite de panel pour ecrire au dessus ou koi???
le code qui me permet de dessiner le rectangle de selection est :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63 bool go = false; 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;// FrameStyle.Thick; 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&&go) { // 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,Color.BlueViolet, SELECTION_STYLE); } this._selecting = false; go = false; } private void button1_Click(object sender, EventArgs e) { go = true; }
Partager