我正在学习表单应用程序,对整个流程非常陌生。我想在屏幕上画一些东西(line),但我不知道如何将PaintEventArgs解析为方法。我读过不同的帖子,但我不明白我实际上应该做什么。大多数人说使用PictureBox
尝试了一些事情,但无法从KeyDown
方法调用paint。
我还在InitializeComponent
中添加了KeyDown
方法。this.KeyDown += new KeyEventHandler(this.Form1_KeyDown);
先谢谢你。
编码:
private void Form1_KeyDown(object sender, KeyEventArgs ke)
{
if (ke.KeyCode == Keys.Space)
{
Custom_Paint(sender, needPaintEventArgsHere);
}
}
private void Custom_Paint(object sender, PaintEventArgs pe)
{
Graphics g = pe.Graphics;
Pen blackPen = new Pen(Color.Black, 1);
pe.Graphics.DrawLine(blackPen, 200.0F, 400.0F, 500.0F, 700.0F);
}
1条答案
按热度按时间sg3maiej1#
当从
Form
类继承时,不需要订阅KeyDown
、KeyUp
或Paint
等事件,而是应该覆盖相应的方法OnKeyDown
、OnKeyUp
、OnPaint
。您应该在被覆盖的OnPaint
方法中编写绘制逻辑,并直接在通过PaintEventArgs.Graphics
传递的Graphics
对象上进行绘制。只需调用Control.Invalidate
来触发OnPaint
方法。此外,您可能希望为
Form
启用双缓冲,如构造函数中所示。