1

このような透明なパネルを作成しました(C#で):

public class TransparentPanel : Panel
{
    public TransparentPanel()
    {
    }

    protected override CreateParams CreateParams
    {
        get
        {
            CreateParams createParams = base.CreateParams;
            createParams.ExStyle |= 0x00000020; // WS_EX_TRANSPARENT
            return createParams;
        }
    }

    protected override void OnPaintBackground(PaintEventArgs e)
    {
        // Do not paint background.
    }
}

通常のパネルの上に表示されます。他のパネルに何かを表示するために円を描きたいので、透明の OnPaint メソッドに円を描きます。次に、別のものを表示したいので、この円を別の場所に「移動」する必要があります。

しかし、私はできません。

OnPaint メソッドでこの円を描画しますが、ここで見つけた解決策はどれもうまくいきませんでした。イベントの Graphics オブジェクトは使用しません。使用しても何も表示されないからです。

だから、私はこれを使用する必要があります:

this.CreateGraphics()

背景色を使用して、その上に別の円を描くことはできません。背景は透明のままにする必要があります。また、Color.Transparent で円を描くことはできません。

透明なパネルをクリアすると、透明なパネルが黒の背景に置き換わります。

命令

Graphics.Clear();

コンパイルしません。

これもそうではありません:

gr.Clear();

Color パラメータが必要だからです。

この:

gr.Clear(Color.transparent);

黒の背景を作成します。

考えられる限りのことはすべて試したように思えます。

何か案が ?

4

1 に答える 1

1

I had a similar problem in Java and could resove it by repainting the parent panel. This cleared the transparent child panel as well.

于 2013-01-23T19:09:31.237 に答える