web-dev-qa-db-ja.com

画像に線を引く方法は?

c#でdrawlineメソッドを使用してメソッドに渡されるbmp画像に線を描画したい

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);
}

これはエラーになります。ここにPaintイベントを含める方法を知りたいです(PaintEventArgs e)。

また、drawmethodを呼び出すときにパラメーターを渡す方法を知りたいですか?例

DrawLineInt(Bitmap bmp);

これにより、次のエラーが発生します "名前 'e'は現在のコンテキストに存在しません"

12
user1150071

"C#でdrawlineメソッドを使用してメソッドに渡されるbmp画像に線を描画します"

PaintEventArgs eは、オブジェクトの「ペイント」イベント中にこれを行うことをお勧めします。これをメソッドで呼び出すので、どこにもPaintEventArgsを追加する必要はありません。

メソッドでこれを行うには、@ 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);
    }
}

「ペイント」イベントは、オブジェクトが再描画されるときに発生します。詳細については、以下を参照してください。

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

22
Tom

次のように、GraphicsからImageオブジェクトを取得する必要があります。

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