我正在构建应用程序,它使用 StrechDIBits 在标签的 hdc 上绘制原始位图图像。
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 放在任何地方都没有任何效果。非常感谢任何帮助或建议。
编辑:对我来说可悲的是,当我将绘画代码放入,例如,标签的点击事件时,它工作正常......