Déplacement d'image dans un scrollable panel
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:
Code:
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
} |
ça marche relativement bien dans d'autres langage comme Dephi, mais là, lorsque je déplace, j'ai des mouvements désordonnés.
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