0

アプリケーションを最初に開いたときにピクチャ ボックスの背景を描画するメソッドを作成しようとしています。これを行う方法はありますか?

私はこれを試しました

private void Form1_Load(object sender, EventArgs e)
{
    DrawBackground();

}

public void DrawBackground() 
        {
            Graphics SimWindow = pictureBoxSimDisplay.CreateGraphics();

            SolidBrush brush = new SolidBrush(Color.Green);

            SimWindow.FillRectangle(brush, 0, 211, 491,5);
        }

しかし、それは機能していません。

4

4 に答える 4

2

私は個人的にフォームのOnPaintメソッドをオーバーライドします。これにより、初期ロードを含めてフォームが再描画されるたびに、描画する背景が再描画されます。画像またはビットマップを追加する場合は、フォームのロード イベントを次のように使用する必要があります。他の人が述べています。

上記のリンクから:

OnPaint メソッドは、フォームが描画されるたびに画像を再描画するためにオーバーライドされます。そうしないと、画像は次の再描画までしか持続しません

.


これを試してみてください。OnPaint メソッドを使用すると、初期ロードで少し不安定になることがわかりましたが、Timer(100ms) を使用してフォームを無効にすると、毎回正常に動作します。

protected override void OnPaint(PaintEventArgs e)
{
    base.OnPaint(e);
    DrawBackground();

}

public void DrawBackground()
{
    Graphics SimWindow = pictureBoxSimDisplay.CreateGraphics();
    SolidBrush brush = new SolidBrush(Color.Green);
    SimWindow.FillRectangle(brush, 0, 211, 491, 5);
    SimWindow.Dispose(); // Don't forget to dispose your Graphic Object
}

private void Form1_Load(object sender, EventArgs e)
{
    timer1.Start();
}


private void timer1_Tick(object sender, EventArgs e)
{
    timer1.Stop();
    Invalidate();
} 
于 2012-06-05T04:09:44.913 に答える
1

アプリの実行時に何かをしたいと言っていますか? その場合は、Main() / OnLoad() ですべて実行してください。マシンの起動時にそれを行いたいと言っている場合は、これにいくつかのウィンドウタグを投げてください! :)

于 2012-06-05T04:05:03.123 に答える
1

フォームを使用している場合は、[デザイン] ウィンドウでフォームをダブルクリックすると、フォームの読み込み時にコードが実行される "Form1"_Load メソッドに移動します。

于 2012-06-05T04:08:53.473 に答える
1

これを WinForms で実行している場合 (?)、メイン フォームの OnLoad メソッドで実行できない理由はありますか?

于 2012-06-05T04:03:45.020 に答える