Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.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#_Arrays_Wpf_Line_Paint - Fatal编程技术网

C# 用数组画线

C# 用数组画线,c#,arrays,wpf,line,paint,C#,Arrays,Wpf,Line,Paint,我正在开发一个应用程序,我需要在画布上画线,这些线需要在一个数组中,这样我仍然可以添加更改(可调整大小和颜色)。我正在尝试构建一个类似绘画的函数 这是我的密码 private void w_Canvas_MouseMove(object sender, MouseEventArgs e) { if (isDrawing) { if (e.LeftButton == MouseButtonState.Pressed) { //

我正在开发一个应用程序,我需要在画布上画线,这些线需要在一个数组中,这样我仍然可以添加更改(可调整大小和颜色)。我正在尝试构建一个类似绘画的函数

这是我的密码

private void w_Canvas_MouseMove(object sender, MouseEventArgs e)
{
    if (isDrawing)
    {
        if (e.LeftButton == MouseButtonState.Pressed)
        {
            //lineStartPoint = e.GetPosition(w_Canvas);
            //Thread.Sleep(2);

            Line[] l = new Line[999999];
            for (int d = 0; d < 999999; d++)
            {
                Point lineStartPoint = e.GetPosition(w_Canvas);

                l[d].X1 = lineStartPoint.X;
                l[d].Y1 = lineStartPoint.Y;

                Thread.Sleep(1);
                Point lineEnd = e.GetPosition(w_Canvas);
                l[d].X2 = lineEnd.X;
                l[d].Y2 = lineEnd.Y;

                l[d].Stroke = brush;
                l[d].StrokeThickness = 3;
                //lineStartPoint = lineEnd;
                //probeert ee nproperty the accessen warvan de property 0 is
            }
            DrawLines(l);
        }
    }
}

private void DrawLines(Line[] l)
{
    foreach (Line line in l)
    {
        w_Canvas.Children.Add(line);
    }
}

private void w_Canvas_MouseUp(object sender, MouseButtonEventArgs e)
{
    isDrawing = false;
}
private void w_Canvas_MouseMove(对象发送方,MouseEventArgs e)
{
if(isDrawing)
{
如果(e.LeftButton==鼠标按钮状态。按下)
{
//lineStartPoint=e.GetPosition(带画布);
//睡眠(2);
第[]行l=新行[999999];
对于(int d=0;d<999999;d++)
{
Point lineStartPoint=e.GetPosition(带画布);
l[d].X1=lineStartPoint.X;
l[d].Y1=lineStartPoint.Y;
睡眠(1);
点lineEnd=e.GetPosition(w_画布);
l[d].X2=lineEnd.X;
l[d].Y2=lineEnd.Y;
l[d]。笔划=画笔;
l[d]。冲程厚度=3;
//lineStartPoint=lineEnd;
//probeert ee nproperty accessen warvan de属性0为
}
抽绳(l);
}
}
}
专用作废提取线(线[]l)
{
foreach(左行)
{
w_Canvas.Children.Add(行);
}
}
私有void w_Canvas_MouseUp(对象发送器,MouseButtonEventArgs e)
{
isDrawing=false;
}

目前,我收到一个“System.NullReferenceException”,其中对象引用未安装在对象的副本上。

您尝试访问
l[d]
但未初始化,请添加

l[d] = new Line();

在for循环中。

您尝试访问
l[d]
但它未初始化,请添加

l[d] = new Line();

在for循环中。

必须为数组中的每一行创建一个实例

    Line[] l = new Line[999999];
    for (int d = 0; d < 999999; d++)
    {
       l[d] = new Line();
    }
Line[]l=新行[999999];
对于(int d=0;d<999999;d++)
{
l[d]=新行();
}

必须为数组中的每一行创建一个实例

    Line[] l = new Line[999999];
    for (int d = 0; d < 999999; d++)
    {
       l[d] = new Line();
    }
Line[]l=新行[999999];
对于(int d=0;d<999999;d++)
{
l[d]=新行();
}

多亏了一些帮助,我才得到了它

private void w_Canvas_MouseMove(object sender, MouseEventArgs e)
    {
        if (isDrawing)
        {
            if (e.LeftButton == MouseButtonState.Pressed)
            {
                Point lineEnd = e.GetPosition(w_Canvas);
                Line l = new Line();

                LINE.Add(new Tuple<double, double, double, double>(lineStartPoint.X, lineStartPoint.Y, lineEnd.X, lineEnd.Y));

                l.X1 = LINE[LINE.Count - 1].Item1;
                l.Y1 = LINE[LINE.Count - 1].Item2;
                l.X2 = LINE[LINE.Count - 1].Item3;
                l.Y2 = LINE[LINE.Count - 1].Item4;

                l.Stroke = brush;
                l.StrokeThickness = 3;
                w_Canvas.Children.Add(l);
                lineStartPoint = lineEnd;
            }
        }
    }

    private void w_Canvas_MouseUp(object sender, MouseButtonEventArgs e)
    {
        isDrawing = false;
    }

}
private void w_Canvas_MouseMove(对象发送方,MouseEventArgs e)
{
if(isDrawing)
{
如果(e.LeftButton==鼠标按钮状态。按下)
{
点lineEnd=e.GetPosition(w_画布);
第l行=新行();
添加(新元组(lineStartPoint.X,lineStartPoint.Y,lineEnd.X,lineEnd.Y));
l、 X1=行[LINE.Count-1]。项1;
l、 Y1=行[LINE.Count-1]。项2;
l、 X2=行[LINE.Count-1]。项3;
l、 Y2=行[LINE.Count-1]。项4;
l、 笔划=刷子;
l、 冲程厚度=3;
w_Canvas.Children.Add(l);
lineStartPoint=lineEnd;
}
}
}
私有void w_Canvas_MouseUp(对象发送器,MouseButtonEventArgs e)
{
isDrawing=false;
}
}
}


谢谢大家的帮助

多亏了一些帮助,我才得到了它

private void w_Canvas_MouseMove(object sender, MouseEventArgs e)
    {
        if (isDrawing)
        {
            if (e.LeftButton == MouseButtonState.Pressed)
            {
                Point lineEnd = e.GetPosition(w_Canvas);
                Line l = new Line();

                LINE.Add(new Tuple<double, double, double, double>(lineStartPoint.X, lineStartPoint.Y, lineEnd.X, lineEnd.Y));

                l.X1 = LINE[LINE.Count - 1].Item1;
                l.Y1 = LINE[LINE.Count - 1].Item2;
                l.X2 = LINE[LINE.Count - 1].Item3;
                l.Y2 = LINE[LINE.Count - 1].Item4;

                l.Stroke = brush;
                l.StrokeThickness = 3;
                w_Canvas.Children.Add(l);
                lineStartPoint = lineEnd;
            }
        }
    }

    private void w_Canvas_MouseUp(object sender, MouseButtonEventArgs e)
    {
        isDrawing = false;
    }

}
private void w_Canvas_MouseMove(对象发送方,MouseEventArgs e)
{
if(isDrawing)
{
如果(e.LeftButton==鼠标按钮状态。按下)
{
点lineEnd=e.GetPosition(w_画布);
第l行=新行();
添加(新元组(lineStartPoint.X,lineStartPoint.Y,lineEnd.X,lineEnd.Y));
l、 X1=行[LINE.Count-1]。项1;
l、 Y1=行[LINE.Count-1]。项2;
l、 X2=行[LINE.Count-1]。项3;
l、 Y2=行[LINE.Count-1]。项4;
l、 笔划=刷子;
l、 冲程厚度=3;
w_Canvas.Children.Add(l);
lineStartPoint=lineEnd;
}
}
}
私有void w_Canvas_MouseUp(对象发送器,MouseButtonEventArgs e)
{
isDrawing=false;
}
}
}


谢谢大家的帮助

当前我收到一个“System.NullReferenceException”
:在哪里?哪一行代码?使用
Thread.Sleep(1)
还有一些看起来很可疑的东西。你想实现什么,因为可能有更好的方法。我将使用一个列表,而不是可笑的巨大列表array@JelleZijderhand这不会解决您的问题:)可能重复的
当前我收到一个'System.NullReferenceException'
:在哪里?哪一行代码?使用
Thread.Sleep(1)
还有一些看起来很可疑的东西。你想实现什么,因为可能有更好的方法。我将使用一个列表,而不是可笑的巨大列表array@JelleZijderhand这不会解决您的问题:)的可能重复项