PictureBox не обновляется - PullRequest
0 голосов
/ 12 января 2019

Я видел так много подобных вопросов здесь, но ни один из них не помог мне. Извините, если это что-то глупое, я учусь.

Я получаю данные от последовательного порта и хочу отображать их постоянно. Для этого я каждый раз получаю данные на растровом изображении и хочу, чтобы 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 (), они не помогают, но замедляют выполнение.

Пожалуйста, помогите мне, что я делаю не так?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...