アプリケーション内でライトボックス効果を作成しようとしています。これを実現するために、半透明のオーバーレイを表すパネルと、必要なすべてのコンテンツをホストする別のパネルを備えた UserControl を用意しました。
この UserControl を表示すると、2 ~ 3 回自分自身をレンダリングしようとすることが多く、背景がどんどん暗くなるように見えます。UserControl で次のことを考えました
protected override void OnPaint ( PaintEventArgs e )
{
if ( Parent != null )
{
Parent.Refresh();
}
base.OnPaint( e );
}
残念ながら、これは恐ろしいループ効果を引き起こし、親が itelf を再描画し、次に UserControl が itelf を再描画するように見えます... 非常に面倒です。これをどうにかして止める方法はありますか?おそらく、アプリケーションからプリントスクリーン画像を取得し、それをユーザーコントロールにオーバーレイを表示して表示しますか?
編集
この質問に気づきましたが、作成するすべてのライトボックスに対して新しいフォームを作成する必要がないことを願っています!