2011-05-10 4 views
0

私はStrechDIBitsを使用してラベルのhdcに生のビットマップイメージをペイントするアプリケーションを構築しています。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); 

このようにしてビデオストリーム全体を描画します。私はフルスクリーンを実現するために、画面全体に自分のフォームとラベルのサイズを変更する機能も持っています。ビデオを再生するときにもうまくいきます。

しかし、私はビデオを停止するか、1つの画像しか送信せず、完全なscren機能を呼び出すとします。それはイメージを再描画しません、それは私の問題です。ペイントイベントを使用しようとしましたが、サイズ変更後に再度画像をペイントするためにフォームとラベルの両方のイベントをサイズ変更しましたが、何も動作しません。私がフルスクリーンを取得したり、通常のサイズに戻ったりすると、画像がすぐに点滅しますが、コントロールの色で再描画され、消えます。私はStretchDIBitsでペイントコードを配置しようとしましたが、どこでも動作しません。助けやアドバイスは本当に感謝しています。

編集:私にとって悲しいことは、私は、たとえば、ラベルのイベントをクリックして、中に絵画のコードを入れたときに、それが正常に動作していること、である...他のプロジェクトで使用されるカスタムペイントボックスコントロールを使用することによって解決

答えて

0

。このコントロールは、イメージが再描画される上書きされたOnPaintメソッドを使用します。何とかこのソリューションは動作しますが、以前とほとんど同じソリューションではありません。