web-dev-qa-db-fra.com

comment tracer une ligne sur une image?

je veux dessiner une ligne sur une image bmp qui est passée dans une méthode utilisant la méthode drawline en C #

public void DrawLineInt(Bitmap bmp)
{

Pen blackPen = new Pen(Color.Black, 3);

int x1 = 100;
int y1 = 100;
int x2 = 500;
int y2 = 100;
// Draw line to screen.
e.Graphics.DrawLine(blackPen, x1, y1, x2, y2);
}

cela donne une erreur. Je veux donc savoir comment inclure l'événement Paint ici (PaintEventArgs e)

et voulez également savoir comment passer des paramètres lorsque nous appelons drawmethod? exemple

DrawLineInt(Bitmap bmp);

cela donne l'erreur suivante "Le nom 'e' n'existe pas dans le contexte actuel"

12
user1150071

"Tracez une ligne sur une image bmp qui est passée dans une méthode utilisant la méthode drawline en C #"

PaintEventArgs e suggérerait que vous le fassiez pendant l'événement "Paint" pour un objet. Puisque vous appelez cela dans une méthode, alors non, vous n'avez pas besoin d'ajouter PaintEventArgs e n'importe où.

Pour ce faire dans une méthode, utilisez la réponse de @ BFree.

public void DrawLineInt(Bitmap bmp)
{
    Pen blackPen = new Pen(Color.Black, 3);

    int x1 = 100;
    int y1 = 100;
    int x2 = 500;
    int y2 = 100;
    // Draw line to screen.
    using(var graphics = Graphics.FromImage(bmp))
    {
       graphics.DrawLine(blackPen, x1, y1, x2, y2);
    }
}

L'événement "Paint" est déclenché lorsque l'objet est redessiné. Pour plus d'informations, voir:

http://msdn.Microsoft.com/en-us/library/system.windows.forms.control.Paint.aspx

22
Tom

Vous devez obtenir l'objet Graphics à partir de Image comme ceci:

using(var graphics = Graphics.FromImage(bmp))
{
   graphics.DrawLine(...)
}
5
BFree