Windowsフォームの透明コントロールのグラフィックスをクリアする方法

StackOverflow https://stackoverflow.com/questions/1609032

質問

だから、私はWindowsフォームの開発にはあまり慣れていません。

「ちょっと忙しい」を作成しようとしています。形状を回転させるだけのコンポーネント。このコントロールは一時的であり、他のコントロールの上に描画する必要があります。クラスはControlから直接継承します。

だから私はこれをコンストラクタに持っています:

SetStyle(ControlStyles.Opaque, true);

そしてこれ:

protected override CreateParams CreateParams
{
    get
    {
        CreateParams parms = base.CreateParams;
        parms.ExStyle |= 0x20; 
        return parms;
    }
}

他のコントロールの上に描画するコントロールを取得します。

今、私の問題はこれです。スムーズなアニメーションの外観を与えるために、1秒間に数回コントロールを再描画します。ただし、前のフレームで描画されたものをクリアする方法がわかりません。 OnPaint e.Graphics.Clear(Color.Transparent)を使用すると、コントロール全体が黒になります。

コントロールの描画内容をクリアする方法はありますか?

コントロールのサイズを変更すると背景がクリアされることに気付きました。

動作しないもの

  1. 何もしないためにOnPaintBackgroundをオーバーライドします。または、単にbase.OnPaintBackgroundを呼び出します。同じ結果。
役に立ちましたか?

解決

さて、私はここで解決策を見つけました: http://www.bobpowell.net/transcontrols.htm

透明な背景を保持するには、実際に親コントロールを無効にする必要があります。

他のヒント

この記事が提示するOnPaintBackgroundをオーバーライドする必要がある場合があります: http://saftsack.fs.uni-bayreuth.de/~dun3/archives/creating-a-transparent-panel-in-net/108.html

OnPaintBackgroundを強制的に呼び出すためにコントロールをクリアする必要がある場合、コントロールを無効にする必要がある場合があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top