C# 在应用程序开始C处画十字#
我试图在Windows窗体应用程序中画一个十字 我可以用两条线来做。我已经用一个按钮测试过了。 现在我不知道如何在打开应用程序时不按按钮自动绘制它C# 在应用程序开始C处画十字#,c#,.net,winforms,drawing,C#,.net,Winforms,Drawing,我试图在Windows窗体应用程序中画一个十字 我可以用两条线来做。我已经用一个按钮测试过了。 现在我不知道如何在打开应用程序时不按按钮自动绘制它 感谢您的帮助:D只需调用InitializeComponent()中的方法 每个表单都有自己的构造函数 您可以在项目树{formname}中看到它。Designer.cs按F7 在这里你可以看到构造器 所以就在那里调用它 private void InitializeComponent() { this.components
感谢您的帮助:D只需调用InitializeComponent()中的方法 每个表单都有自己的构造函数 您可以在项目树{formname}中看到它。Designer.cs按F7 在这里你可以看到构造器 所以就在那里调用它
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Text = "Form1";
}
好的做法是重写表单
OnPaint
方法,并在那里进行所有需要的绘制(使用Graphics
对象,从e.Graphics
):
否则,如果您将绘制代码放在其他地方(加载、显示等)-当系统重新绘制表单时,您的绘制不会自动完成。@EBrown这不起作用…我建议不要使用
form.Load
,因为在那里绘制的任何内容都将在以后的Paint
事件中被覆盖。我建议添加一个Paint
事件处理程序,并使用PaintEventArgs
中提供的图形对象在那里绘制。请看这里的更多内容:我不认为表单在构造函数末尾一定会有一个窗口句柄,而且您需要一个窗口句柄来进行任何绘图。此外,InitializeComponent
不是构造函数,它由设计器“拥有”,这意味着在设计器中进行更改时,对InitializeComponent
中的代码所做的任何更改都将被覆盖。即使如此,下一次刷新表单或拖动另一个窗口时,在此完成的任何绘图都将被删除。说得好。简洁准确。
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
//your paintings here
}