0

クリックで起動するイベント関数があり、その中にグラフィック命令があります

    private void pictureBox1_Click(object sender, EventArgs e)
    {
        switch (modCLick)
        {
            case 2: 
                    session.g.FillRectangle(Brushes.Tomato, MousePosition.X, MousePosition.Y, 50, 100);
                break;
        }
        ModCLick = 1;
    }

プログラムを起動するとクリックしても何も起こりませんが、キーを押すと (一部のキーのみ)、変更が適用されます (四角形が表示されます)。正しく更新されないのはなぜですか? PS : ケースの説明は気にしないでください。

4

1 に答える 1

1

Graphics インスタンスをグローバル変数に格納することは、非常に悪い考えです。代わりに次のようにします。

using (var g = Graphics.FromImage(pictureBox1.Image)) {
   g.FillRectangle(Brushes.Tomato, MousePosition.X, MousePosition.Y, 50, 100);
   pictureBox1.Invalidate();
}

Invalidate() 呼び出しは、探しているものです。PictureBox は、Image プロパティが変更されたことのみを認識できます。画像コンテンツが変更されたことは認識できません。

于 2013-08-23T17:34:28.943 に答える