Перерисовка изображения после перехода на весь экран и обратно в C ++ / CLI - PullRequest
0 голосов
/ 11 мая 2011

Я создаю приложение, которое рисует необработанные растровые изображения на hdc метки, используя StrechDIBits.

ptr = g->GetHdc();
dc = (HDC)ptr.ToInt32 ();
SetStretchBltMode (dc, COLORONCOLOR);
StretchDIBits (dc, 0, 0, (int) (LabelPictureShow->Width), (int) (LabelPictureShow->Height), 0, 0, width, height, data, bitmapInfo, DIB_RGB_COLORS, SRCCOPY);    
 g->ReleaseHdc (ptr);

Таким образом, я рисую весь видеопоток, одно изображение из потока за другим, который работает идеально.У меня также есть функция, которая изменяет размер моей формы и надписи на весь экран для реализации полноэкранного режима, что также прекрасно работает при воспроизведении видео.

Но, когда я останавливаю видео или отправляю только одно изображение и вызываю функцию полного просмотра.Это не будет перекрашивать изображение, и это моя проблема.Я пытался использовать Paint Event, Resize Event как формы, так и метки для рисования изображения снова после изменения размера, но ничего не получалось.Когда я получаю полноэкранный режим или возвращаюсь к нормальному размеру, мое изображение на короткое время мигает, но затем оно перекрашивается под цвет элемента управления и исчезает.Я пытался поместить код рисования с помощью StretchDIBits везде, где ничего не работает.Любая помощь или совет действительно приветствуются.

edit: мне грустно то, что когда я помещаю код рисования, например, в событие щелчка метки, он работает нормально ...

1 Ответ

0 голосов
/ 11 мая 2011

Решено с помощью пользовательского элемента управления PaintBox, используемого в другом проекте.Этот элемент управления использует перезаписанный метод OnPaint, когда изображение перерисовывается.Каким-то образом это решение работает, но предыдущее почти такое же решение нет.

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