web-dev-qa-db-ja.com

透明な画像で2つの重複するPictureBoxコントロールを持つことは可能ですか?

2つのオーバーラップ PictureBoxコントロール があるので、画像ボックスの透明な領域で、下の(zオーダーの)コントロールが表示されるようにしようとしています。

Microsoftの提案を試してみてください の後でも、希望する結果が得られません。

これは私が現在持っているものです:

enter image description here

そしてこれが私が欲しいものです:

enter image description here

だから私の質問は:

2つのPictureBoxコントロールを互いに重ねて(または別の方法で)透明な領域を輝かせて、目的の結果を達成する方法はありますか?

更新:

実際、私は この回答 をSO質問 " C#WinFormsの透明画像 "に)を使用して解決しました。

15
Uwe Keim

これを試して

private void Form1_Load(object sender, EventArgs e)
{
  // Transparent background...  
  pictureBoxOverlay.BackColor = Color.Transparent;

  // Change parent for overlay PictureBox...
  pictureBoxOverlay.Parent    = pictureBoxMain;

 // Change overlay PictureBox position in new parent...
 // pictureBoxOverlay.Location  = new Point(0, 0);
}

結果

enter image description here

llink

18
Alessio Koci

私の知る限り、コントロールの透明度はその親コン​​トロールに依存します(与えたリンクに記載されているように)。つまり、探している効果を得るには、1つの画像ボックスをネストする必要があります。ピクチャーボックスがコンテナではないことを考えると不可能な別のピクチャーボックス。

ただし、親画像の画像ボックスの代わりにカスタムコンテナコントロールを使用できます。最も基本的なコントロールはパネルです。コントロールの背景画像を設定し、2番目の画像ボックスをその中に入れるだけです。

別の解決策は、1つの画像ボックスを使用してレンダリングを手動で管理することです。

他の方法の疑似シミュレーションされた透明度は静かに非効率的であるため、これは断然最良の解決策です。

2
Samy Arous