Моя проблема довольно проста. Мне нужно обновить одновременно 7 каналов ЭКГ при 250 Гц (4 мс) - теоретически - (где каждый канал моделируется в пользовательском представлении - в Android / UserControl - в Windows UWP Win2D).
Идея состоит в том, что я не могу полагаться на подход .invalidate () (вызывая 7 x .invalidate () для каждого Canvas / View), потому что после вызова Invalidate () будет вызываться OnDraw () когда-нибудь в будущем [документы]. Таким образом, это не детерминированный способ рисовать «одновременно». (неправильно сказано -> скажем последовательно ).
Мое приложение будет иметь различные переключаемые макеты: каждый канал в строке (7 строк на странице); 2 х 3 + 1 (фото прилагается); Один канал (на странице)
Как мне достичь своего плана, используя модульный способ обновления / отрисовки каждого канала «в одно и то же время»? [in Android, но также приветствуется решение в Windows UWP]
Мои варианты (не очень эффективные):
- Наличие одного холста («большого» экрана) и рисование каждого Логический канал ЭКГ в регионах. Это не очень модульно, так как мне понадобится холст для каждого макета. (расположение строк / расположение столбцов / расположение одного канала). Затем, вызывая 1 x .Invalidate (), чтобы перерисовать весь холст ... + много времени ...
- Я не знаю, может ли OpenGL помочь мне с низкоуровневым подходом к рисованию.
Мне нужно что-то вроде этого (взято из подхода C ++ - CClientD C d c):
dc.MoveTo(ptStart);
dc.LineTo(ptEnd);
Вызов подпрограммы, содержащей эти команды для каждого "Канала" "гарантирует, что после получения новых значений для каждого канала (байт [7]) они будут перерисованы последовательно, детерминистически c способом.
for(int i=0; i<7; i++) ecgChannel[i].update(newAmplitude[i]);
7 Каналы ЭКГ - пример компоновки - фото