[英]How to draw a string on a picturebox with C# immediately after I show it?
我有一个名为Menu.cs
的主窗口形式,在此类中,我有两个名为“ lines”和“ Menu.cs
”的按钮,每个按钮都打开各自的窗口。 多边形有一个图片框,我必须绘制x和y轴
private void botonPoligonos_Click(object sender, EventArgs e)
{
WindowPolygons objPolygons = new WindowPolygons();
objPolygons.Show();
}
实际上,我使用一个名为“ drawAxes”的按钮来完成此操作:
public void drawAxes_Click()
{
drawAxes();
}
public void drawAxes()
{
Graphics papel = pictureBox1.CreateGraphics();
Pen lapiz = new Pen(Color.Black);
//Dibujo de ejes X y Y
papel.DrawLine(lapiz, 20, 425, 742, 425);
papel.DrawLine(lapiz, 20, 425, 20, 20);
papel.DrawString("X", myFont, Brushes.Black, new Point(745, 418));
papel.DrawString("Y", myFont, Brushes.Black, new Point(14, 5));
}
但是我不想使用按钮来完成操作,我想绘制轴,因为显示了drawAxes()
,我已经尝试将方法drawAxes()
放在构造函数中, WindowPolygons.cs
的加载器中以及下面objPolygons.show()
但没有任何反应,有人知道该怎么做吗?
这是我第一次发问,谢谢:)
使用以下代码和以下设置:
private void drawAxes(Graphics g, Rectangle rect)
{
Pen lapiz = new Pen(Color.Black);
//Dibujo de ejes X y Y
g.DrawLine(lapiz, 20, rect.Height - 20, rect.Width - 20, rect.Height - 20);
g.DrawLine(lapiz, 20, rect.Height - 20, 20, 20);
g.DrawString("X", Font, Brushes.Black, new Point(rect.Width - 17 , rect.Height - 27));
g.DrawString("Y", Font, Brushes.Black, new Point(14, 5));
}
private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
drawAxes(e.Graphics, pictureBox1.Bounds);
}
private void pictureBox1_Resize(object sender, EventArgs e)
{
pictureBox1.Invalidate();
}
将pictureBox1停靠在表单上(属性Dock
设置为Fill
),以便它随表单自动增长。
将方法pictureBox1_Paint
附加到pictureBox1_Paint
的Paint-Event。
将方法pictureBox1_Resize
附加到pictureBox1_Resize
的Resize-Event。
在pictureBox1_Resize()
对Invalidate()
的调用要求pictureBox1在其大小更改后重新绘制。
当需要绘制图片框时,会自动调用pictureBox1_Paint()
方法,这是因为初始显示或尺寸已更改或其他任何原因。 它调用drawAxes
进行实际绘制,并传递要绘制的Graphics对象和图片框的当前大小。
在构造函数或窗体加载中,窗体仍未绘制。 因此将方法放在元素的表单绘制事件上:
protected void pictureBox1_Paint(object sender, PaintEventArgs e)
{
Graphics papel = e.Graphics();
Pen lapiz = new Pen(Color.Black);
//Dibujo de ejes X y Y
papel.DrawLine(lapiz, 20, 425, 742, 425);
papel.DrawLine(lapiz, 20, 425, 20, 20);
papel.DrawString("X", myFont, Brushes.Black, new Point(745, 418));
papel.DrawString("Y", myFont, Brushes.Black, new Point(14, 5));
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.