2011-05-10 6 views
0

Я создаю приложение, которое рисует необработанные растровые изображения на hdc на ярлыке с помощью StrechDIBits.Перерисовать изображение после перехода на полный экран и обратно в C++/CLI

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); 

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

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

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

ответ

0

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