Question

Je tente de faire glisser une forme autour d'un picturebox sur l'événement mousemove mais je suis mal à l'obtenir pour se déplacer en douceur. La zone d'image a une image chargée en arrière-plan et je voudrais l'objet graphique pour faire glisser un cercle au-dessus de l'image lorsque la souris est cliqué et traîné.

Je l'ai travail en créant un clone de l'image originale à chaque fois que la souris se déplace et rechargeant la zone d'image, mais il semble que leur doit être une meilleure façon d'y parvenir.

sans recharger la bitmap d'origine chaque fois que des graphiques ajoutés restent sur l'image créant une traînée qui ressemble plus à une application de peinture.

Comment effacer les dessins précédents sans recharger l'ensemble de l'image à chaque fois? Toute aide appréciée.

private void picCanvas_MouseMove(object sender, MouseEventArgs e)
{
    if (_drag)
    {
        picCanvas.Image = (Bitmap)_original.Clone();
        Graphics g = Graphics.FromImage((Bitmap)picCanvas.Image);
        g.DrawEllipse(_whitePen, e.X, e.Y, 10, 10);
        picCanvas.Invalidate();
    }
}

private void picCanvas_MouseDown(object sender, MouseEventArgs e)
{
    _drag = true;
}

private void picCanvas_MouseUp(object sender, MouseEventArgs e)
{
    _drag = false;
}
scroll top