Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C“Graphics.Drawline功能不工作”中的;名称';图形';“在当前上下文中不存在”;_C#_Namespaces - Fatal编程技术网

C# C“Graphics.Drawline功能不工作”中的;名称';图形';“在当前上下文中不存在”;

C# C“Graphics.Drawline功能不工作”中的;名称';图形';“在当前上下文中不存在”;,c#,namespaces,C#,Namespaces,我正在创建我的第一个visual C#程序。我正在尝试绘制图形/线条,但是我遇到了错误“名称‘graphics’在当前上下文中不存在” 这是我课程的全部内容: public Form1() { InitializeComponent(); Pen blackPen = new Pen(Color.Black, 3); Point point1 = new Point(100, 100); Point point2 = new Point(500, 100);

我正在创建我的第一个visual C#程序。我正在尝试绘制图形/线条,但是我遇到了错误“名称‘graphics’在当前上下文中不存在”

这是我课程的全部内容:

public Form1()
{

    InitializeComponent();

    Pen blackPen = new Pen(Color.Black, 3);

    Point point1 = new Point(100, 100);
    Point point2 = new Point(500, 100);

    graphics.DrawLine(blackPen, point1, point2);
}
Google告诉我,
graphics.DrawLine
函数位于我已经包含的
System.Drawing
名称空间中


如果这是一个简单的问题,我深表歉意,因为这是我的“hello world”。

您将图形声明为构造函数中的局部变量。您可能更愿意首先将其声明为实例,然后在构造函数中分配它。

您将图形声明为构造函数中的局部变量。您可能更愿意首先将其声明为实例,然后在构造函数中分配它。

您可能正在使用在线看到的示例,其中
图形
对象作为参数提供给方法或在所示代码之外定义<代码>图形对象可以绘制到各种目标——屏幕、图像、打印机。。。。你应该找出你想要你的图形去哪里;如何初始化或获取对相应的
图形
对象的引用将取决于此。例如,如果您想要一种简单的方式来绘制屏幕,请通过Windows窗体设计器将
绘制
事件处理程序添加到
窗体
。当事件触发时,您将得到一个
PaintEventArgs
对象,该对象具有名为
Graphics
的属性。使用此选项进行绘图。

您可能是在网上看到的示例中工作的,
图形
对象作为方法的参数提供或在所示代码之外定义<代码>图形
对象可以绘制到各种目标——屏幕、图像、打印机。。。。你应该找出你想要你的图形去哪里;如何初始化或获取对相应的
图形
对象的引用将取决于此。例如,如果您想要一种简单的方式来绘制屏幕,请通过Windows窗体设计器将
绘制
事件处理程序添加到
窗体
。当事件触发时,您将得到一个
PaintEventArgs
对象,该对象具有名为
Graphics
的属性。使用此选项进行绘图。

问题似乎是您尚未声明
图形变量。我想你需要这样的东西:

public Form1() {
    InitializeComponent();

    Pen blackPen = new Pen(Color.Black, 3);

    Point point1 = new Point(100, 100);
    Point point2 = new Point(500, 100);

    Graphics graphics = CreateGraphics();
    graphics.DrawLine(blackPen, point1, point2);
}

这里的额外一行在当前窗体上创建了一个新的图形对象,您可以使用它来绘制线条。

问题似乎是您尚未声明
图形变量。我想你需要这样的东西:

public Form1() {
    InitializeComponent();

    Pen blackPen = new Pen(Color.Black, 3);

    Point point1 = new Point(100, 100);
    Point point2 = new Point(500, 100);

    Graphics graphics = CreateGraphics();
    graphics.DrawLine(blackPen, point1, point2);
}

这里的额外一行在当前窗体上创建了一个新的图形对象,您可以使用它来绘制线条。

您可以添加一个事件处理程序来绘制窗体的事件,其代码如下所示:

    private void Form1_Paint(object sender, PaintEventArgs e)
    {
        Pen redPen = new Pen(Color.Red, 30);

        Point point1 = new Point(0, 0);
        Point point2 = new Point(500, 500);

        e.Graphics.DrawLine(redPen, point1, point2);

        redPen.Dispose();
    }

而不是试图在表单构造函数中绘制。因此,将代码从构造函数移动到此事件处理程序。

您可以添加一个事件处理程序来绘制表单的事件,代码如下所示:

    private void Form1_Paint(object sender, PaintEventArgs e)
    {
        Pen redPen = new Pen(Color.Red, 30);

        Point point1 = new Point(0, 0);
        Point point2 = new Point(500, 500);

        e.Graphics.DrawLine(redPen, point1, point2);

        redPen.Dispose();
    }

而不是试图在表单构造函数中绘制。因此,将代码从构造函数移动到此事件处理程序。

这是一种绘制表单的错误方法。请参阅以了解原因。@adv12这是“Hello World”我的第一个应用程序类型,没有必要尝试宣传最佳实践,问题是尝试使用未声明的变量。问题是尝试使用未声明的变量;现在是关于为什么当窗口被遮挡、调整大小或拖离屏幕时,图形不会被重新绘制。您的答案将编译错误替换为bug。这是一种不好的绘制表单的方法。请参阅以了解原因。@adv12这是“Hello World”我的第一个应用程序类型,没有必要尝试宣传最佳实践,问题是尝试使用未声明的变量。问题是尝试使用未声明的变量;现在是关于为什么当窗口被遮挡、调整大小或拖离屏幕时,图形不会被重新绘制。你的答案是用编译错误来换取错误。MSDN文章中描述了创建图形对象的正确方法。艺术不错,但也不好。它无法明确使用control.CreateGraphics中的图形绘制的任何东西都不会持久化。MSDN文章中描述了创建图形对象的正确方法。艺术不错,但也不好。它无法明确使用控件中的图形绘制的任何东西。CreateGraphics不会持久化。不要忘记对Pen对象调用Dispose。@Jackdaw Yeap,使用此Dispose调用可以改进代码,注意!我更新了代码。非常感谢您的回答…我已经在Form1类中包含了您的函数,但是当我运行应用程序时,它似乎什么都没做。是否还有其他需要执行的操作?不客气,您应该检查代码是否是表单的“Paint”事件的事件处理程序。因此,选择表单,然后单击“事件”选项卡,然后在“外观”类别中双击“绘制”事件,这将在该事件处理程序中创建“绘制”事件的事件处理程序,并从示例的事件处理程序中添加代码。别忘了调用Pen对象上的Dispose。@Jackdaw Yeap,使用此Dispose调用可以改进代码,说得好!我更新了代码。非常感谢您的回答…我已经在Form1类中包含了您的函数,但是当我运行应用程序时,它似乎什么都没做。是否还有其他需要执行的操作?不客气,您应该检查代码是否是表单的“Paint”事件的事件处理程序。因此,选择表单,然后单击事件选项卡,然后在“外观”类别中双击“绘制”事件,这将创建“Pai”的事件处理程序