这个代码在不同的委托中工作得很好,但是当它由按钮触发时不起作用。 “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'“
感谢您的帮助。
答案 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);
}
在你的问题陈述中必须有一些东西没有出现。