我正在尝试为示波器设计一个图形用户界面,作为我的MTech项目的一部分。虽然我没有问题,设置后,从用户输入的X和Y轴,我面临的问题,显示波形。现在,我正在使用PolyLine。每次接收到新值时,都会更新disp数组,清除当前内容,并显示波形。这是我编写的代码,只是为了添加元素和清除Grid。
public partial class MainWindow : Window
{
int[] disp = new int[500];
private int x = 0;
Polyline Wave=new Polyline();
public MainWindow()
{
InitializeComponent();
}
private void SetValue_Click(object sender, RoutedEventArgs e)
{
x++;
SetValue_disp(x);
}
private void SetValue_disp(int x)
{
for (int i = 0; i < disp.Length; i++)
disp[i] = x;
}
private void Clear_Click(object sender, RoutedEventArgs e)
{
TheDisp.Children.Clear();
}
private void Apply_Click(object sender, RoutedEventArgs e)
{
Wave.StrokeThickness = 2;
int i = 0;
foreach (int isp in disp)
{
Wave.Points.Add(new Point(i, isp));
i++;
}
TheDisp.Children.Add(Wave);
}
}我有以下疑问:( 1)为什么当元素单击“应用”按钮时没有显示? 2)必须有更好的方法来清除整个网格并再次重新显示整个数据。
任何形式的帮助都很感激。
发布于 2016-11-21 12:16:53
1)为什么在单击apply按钮时没有显示该元素
因为您没有设置PolyLine的PolyLine属性。请将这一行添加到Apply_Click方法中:
Wave.Stroke = Brushes.Red;2)必须有更好的方法来清除整个网格,重新显示整个数据。
由于这些点实际上在对象PolyLine中,所以在那里处理它们就足够了。将Wave立即添加到构造函数中的Graph.Children中:
public MainWindow()
{
InitializeComponent();
TheDisp.Children.Add(Wave);
}当您现在将值添加到Wave.Points时,它们将显示在图形中。现在,随着时间的推移和新的值的到来,只添加新的值,并删除您添加的每个值的第一个值。
Wave.Points.Add(new Point(X, Y));
// remove the first value
Wave.Points.RemoveAt(0);点数将保持不变。当你正确处理X轴时,你可以模拟示波器的流动.
https://stackoverflow.com/questions/40701876
复制相似问题