Я уже писал несколько таких на других языках, поэтому я могу привести вам принципы, а не пример. Я предполагаю, что у вас есть своего рода кнопки слева и справа, которые позволяют пользователю прокручивать данные, и что ваши данные сигналов хранятся в массиве. Вы сможете определить, сколько данных вы можете уместить на одной ширине экрана, исходя из того, какой коэффициент масштабирования вы используете. Скажем, ваш экран может отображать десять значений за раз, затем вы просто сохраняете начальную точку в массиве сигналов и используете ее в качестве самой левой точки для отображения на вашем экране. Тогда все, что вам нужно сделать, это показать следующие десять значений в вашем массиве. Когда пользователь выбирает кнопку для перемещения влево или вправо по данным, просто увеличивайте или уменьшайте начальную точку. Если вы передаете поток своего сигнала, то поток может увеличивать начальную точку всякий раз, когда вы получаете новый фрагмент данных. Перерисовка после каждого изменения начального значения создаст впечатление прокрутки. Следите за начальными и конечными условиями (т. Е. Вы не хотите прокручивать, пока у вас не появится хотя бы полный экран данных). Все, что вы делаете, это создаете окно для имеющихся у вас данных.
Надеюсь, это поможет.