首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >示波器显示

示波器显示
EN

Stack Overflow用户
提问于 2016-11-20 07:59:12
回答 1查看 664关注 0票数 2

我正在尝试为示波器设计一个图形用户界面,作为我的MTech项目的一部分。虽然我没有问题,设置后,从用户输入的X和Y轴,我面临的问题,显示波形。现在,我正在使用PolyLine。每次接收到新值时,都会更新disp数组,清除当前内容,并显示波形。这是我编写的代码,只是为了添加元素和清除Grid

代码语言:javascript
复制
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)必须有更好的方法来清除整个网格并再次重新显示整个数据。

任何形式的帮助都很感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-21 12:16:53

1)为什么在单击apply按钮时没有显示该元素

因为您没有设置PolyLinePolyLine属性。请将这一行添加到Apply_Click方法中:

代码语言:javascript
复制
Wave.Stroke = Brushes.Red;

2)必须有更好的方法来清除整个网格,重新显示整个数据。

由于这些点实际上在对象PolyLine中,所以在那里处理它们就足够了。将Wave立即添加到构造函数中的Graph.Children中:

代码语言:javascript
复制
public MainWindow()
{
    InitializeComponent();

    TheDisp.Children.Add(Wave);
}

当您现在将值添加到Wave.Points时,它们将显示在图形中。现在,随着时间的推移和新的值的到来,只添加新的值,并删除您添加的每个值的第一个值。

代码语言:javascript
复制
Wave.Points.Add(new Point(X, Y));
// remove the first value
Wave.Points.RemoveAt(0);

点数将保持不变。当你正确处理X轴时,你可以模拟示波器的流动.

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40701876

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档