Bonjour !
Je fais appel à vos lumières pour un drôle de problème:
je suis en train de faire un mini éditeur d'image pour une appli métier. j'affiche une image haute résolution dans un panel donc autoscroll est à true.
Je peux défiler mon image grâce au scrollbars. bon... comme je veux aussi le faire avec ma souris (comme un drag), j'ai implémenté l'évenement OnMouseMove comme ça:
ça marche relativement bien dans d'autres langage comme Dephi, mais là, lorsque je déplace, j'ai des mouvements désordonnés.
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 private void pBox_MouseMove(object sender, MouseEventArgs e) { bool Moving = false; if ((Control.ModifierKeys & Keys.Control) == Keys.Control) { Cursor = Cursors.SizeAll; Moving = true; } else { Cursor = Cursors.Default; Moving = false; } Point ScreenPoint = Control.MousePosition; if (e.Button == MouseButtons.Left) { if (Moving) { // delta X int DeltaX = _PaintCoord.X - ScreenPoint.X; if (DeltaX > 0) HorizontalScroll.Value = Math.Min(HorizontalScroll.Maximum, HorizontalScroll.Value + DeltaX); else HorizontalScroll.Value = Math.Max(HorizontalScroll.Minimum, HorizontalScroll.Value + DeltaX); // delta Y int DeltaY = _PaintCoord.Y - ScreenPoint.Y; if (DeltaY > 0) VerticalScroll.Value = Math.Min(VerticalScroll.Maximum, VerticalScroll.Value + DeltaY); else VerticalScroll.Value = Math.Max(VerticalScroll.Minimum, VerticalScroll.Value + DeltaY); Invalidate(); } } _PaintCoord = ScreenPoint; // _PaintCoord est membre de ma classe }
on dirait que VerticalScroll.Value et HorizontalScroll.Value ne s'affectent pas immédiatement, en pas à pas, en tout cas, l'affectation ne passe pas toujours.
bizarre?
si quelqun connait une solution, je suis preneur.
Merci
Partager