按下按钮触发时无法使DrawLine工作。

时间:2015-05-12 14:46:21

标签: c# graphics event-handling

这个代码在不同的委托中工作得很好,但是当它由按钮触发时不起作用。 “Draw_Click”是一个名为“Draw”的按钮,它应该根据预先制作的点数组在屏幕上绘图。

 private void Draw_Click(object sender, EventArgs e)
    {
        Graphics myInstance = this.CreateGraphics();

        for (int t = 0; t <= numberOfPoints - 1; t++)
        {
            myInstance.DrawLine(pen, spiroArray[0, t], spiroArray[1, t], spiroArray[0, t + 1], spiroArray[1, t + 1]);
        }

    }

但是当我在这个类中有相同的代码时,它工作正常(减去myInstance行)。

private void Form1_Paint(object sender, PaintEventArgs e)
    {
    }

我使用“e”代替“myInstance”只是为了让这个问题尽可能简短。

基本上,Form1_Paint有什么特别之处?我不应该能够在特殊的Form1Paint类之外绘制一些东西吗?如果我使用Form1_Paint,我无法控制它何时进行绘制。我基本上试图让用户更改参数等更新图纸。

错误是“错误1”当前上下文中不存在名称'DrawLine'“

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我不确定我是否正确地提出了您的问题,因为如果我按照我的想法阅读您的问题和代码,您应该得到的错误是当前上下文中不存在“笔”。如果使用相同的代码进行绘制,则可以使用button_click或form_paint事件。 “this”仍将引用表单,并使用它来实例化图形对象将使您可以访问表单中的任何位置。从按钮单击处理程序或表单绘制方法。然而,唯一的想法是我能看到失败的是你从未定义笔。这是我使用的代码,当表单第一次出现时它画了一条红线,然后当我点击我放在同一表格上的按钮时画了一条黑线。

    private void button1_Click(object sender, EventArgs e)
    {
        Graphics myInstance = this.CreateGraphics();
        myInstance.DrawLine(Pens.Black, 15, 10, 25, 20);
    }

    private void Form1_Paint(object sender, PaintEventArgs e)
    {
        Graphics myInstance = this.CreateGraphics();
        myInstance.DrawLine(Pens.Red, 10, 10, 20, 20);
    }

在你的问题陈述中必须有一些东西没有出现。