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

我会亲自重写 Forms OnPaint方法,这样,当重新绘制 Form 时,包括初始加载在内,您在其上绘制的背景将被重新绘制,如果您要添加图像或位图,则应使用 Form Load 事件作为其他人已经说过。

从上面的链接:

每次绘制表单时,都会重写 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

如果您在 WinForms (?) 中执行此操作,是否有任何理由不能在主窗体的 OnLoad 方法中执行此操作?

于 2012-06-05T04:03:45.020 回答
1

你是说你想在应用程序运行时做点什么吗?如果是这样,那么只需在您的 Main()/OnLoad() 中完成所有操作。如果您说要在机器启动时执行此操作,请在此添加一些 windows 标签!:)

于 2012-06-05T04:05:03.123 回答
1

如果您使用的是表单,您可以在 [Design] 窗口中双击您的表单,它会带您进入“Form1”_Load 方法,在该方法中代码在表单加载时运行。

于 2012-06-05T04:08:53.473 回答