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这不会解决您的问题:)的可能重复项