绘画事件处理程序

时间:2019-06-03 20:56:05

标签: c# events paint

我是C#的新手,所以这可能是我不了解绘画事件如何工作的大部分问题。我有一个绘制一系列矩形的代码。我想在按下空格键时使用GDI +显示它。如果我不使用key事件来调用绘图类,那么一切都会正常运行。我的问题是,当我将新的绘画事件处理程序放入空格键事件处理程序中时,什么也没发生。我已经删除了一些代码,以便在出现此问题时更易于查看。提前致谢。

using System;
using System.Windows.Forms;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.IO;
using System.Linq;
using System.Timers;
using System.Windows.Input;
using System.Threading;
using System.Threading.Tasks;
using System.ComponentModel;

public class Drawgra : Form
{
    public static void Main()
    {
       Application.Run(new Drawgra());
    }

    public Drawgra()
    {
        int screenheight = 950; int screenwidth = 1600;
        this.Size = new Size(screenwidth, screenheight);
        ConsoleKeyInfo key;
        key = Console.ReadKey(true);
        this.KeyPreview = true;
        this.KeyDown += new KeyEventHandler(Form1_KeyDown);
      //  this.Paint += new PaintEventHandler(Draw_outlines);
    }

    public void Form1_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.Space)
        {
            this.Paint += new PaintEventHandler(Draw_outlines);
        }
    }



    public void Draw_outlines(object sender, PaintEventArgs e)
    {
        Graphics g = e.Graphics;
        Pen box = new Pen(Color.Black, 20);
        g.DrawRectangle(box, 100, 0, 200, 400);
    }

}//close form

1 个答案:

答案 0 :(得分:1)

您只需添加一次事件处理程序,而不是每次击键一次,然后在每次击键上调用Invalidate()使其重绘并触发该处理程序。