このような透明なパネルを作成しました(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);
黒の背景を作成します。
考えられる限りのことはすべて試したように思えます。
何か案が ?