C#_Paint と Refresh のメモ

pictureBox.Paint イベントに、pictureBox.Refresh(); を書いたら
常に Paint が呼ばれるようになった。何故。

Paint イベントは、コントロールが再描画されると発生
Refresh メソッドは再描画なのでループしていることになる。と思う。

 

 

Memo

マウスドラッグで図形を描く時、
Refresh しないとマウス動かした分の図形が描写される。よって再描画が必要。

ex ) 色々省略ソース

    private void pictureBox_MouseDown(object sender, MouseEventArgs e)
    {
        //e.Location; で始点保持
    }
   
    // 左ボタン押しながらドラッグすると図形が描かれる
    private void pictureBox_MouseMove(object sender, MouseEventArgs e)
    {
        using (Graphics g = pictureBox.CreateGraphics())
        {
            g.DrawEllipse(Pens. ~
        }
        pictureBox.Refresh();
    }
   
    // これも必要。ないと左ボタン離したら描いた図形が消えてしまう
    private void pictureBox_Paint(object sender, PaintEventArgs e)
    {
        e.Graphics.DrawEllipse(Pens. ~
    }

 

 

こちらから。
https://dobon.net/vb/dotnet/control/refreshupdateinvalidate.html
https://msdn.microsoft.com/ja-jp/library/system.windows.forms.control.paint

以上。