Я видел так много подобных вопросов здесь, но ни один из них не помог мне. Извините, если это что-то глупое, я учусь.
Я получаю данные от последовательного порта и хочу отображать их постоянно. Для этого я каждый раз получаю данные на растровом изображении и хочу, чтобы PictureBox отображал это растровое изображение. Но он не обновляется (т.е. я просто вижу пустую область), пока все данные не будут получены полностью. Тогда я вижу только последний график, со всеми данными. Но я проверил: графики отображаются правильно, и класс формы также получает их правильно. И эти операции не слишком быстрые, потому что я даже могу сохранять файлы.
Вот мой код.
В конструкторе:
TemperatureListener::GraphBuilt += gcnew TemperatureListener::GraphBuiltHandler(this, &TrainingWindow::on_graph_built);
// GraphBuilt is fired each time when new graph is built
curr_index = 0; // For debugging
on_graph_built:
void TrainingWindow::on_graph_built(Bitmap^ b)
{
this->b = b;
pictureBox->Invalidate();
// Code here executes when each new data point is received, as expected
b->Save("Files/img" + curr_index + ".bmp"); // For debugging - saved pictures as I expect
curr_index++; // For debugging
}
На событии рисования:
System::Void TrainingWindow::pictureBox_Paint(System::Object^ sender, System::Windows::Forms::PaintEventArgs^ e)
{
pictureBox->Image = b;
}
Я также пробовал Update () и Refresh (), они не помогают, но замедляют выполнение.
Пожалуйста, помогите мне, что я делаю не так?