我第一次打开应用程序时尝试制作一个绘制图片框背景的方法。有没有办法做到这一点?
我试过这个
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);
}
但它不起作用。
答案 0 :(得分: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();
}
答案 1 :(得分:1)
如果你在WinForms(?)中这样做,有什么理由你不能在主窗体的OnLoad方法中这样做吗?
答案 2 :(得分:1)
你是说你想在应用程序运行时做某事吗?如果是这样,那么只需在Main()/ OnLoad()中完成所有操作。如果你想在机器启动时想要这样做,那就扔掉一些windows标签吧! :)
答案 3 :(得分:1)
如果您正在使用表单,可以在[设计]窗口中双击表单,它将转到您的“Form1”_Load方法,其中代码在表单加载时运行。