16

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

マイクロソフトが提案することを試しても、望ましい結果が得られません。

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

ここに画像の説明を入力

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

ここに画像の説明を入力

だから私の質問は:

PictureBox互いに重なり合って透明な領域が透けて見えるようにする 2 つのコントロール (または別の方法) を使用して、目的の結果を達成する方法はありますか?

アップデート:

実際、SOの質問「C#WinFormsを使用した透明な画像」に対するこの回答を使用して解決しました。

4

2 に答える 2

21

これを試して

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);
}

結果

ここに画像の説明を入力

リンク

于 2012-07-10T12:47:44.043 に答える
2

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

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

もう 1 つの解決策は、1 つのピクチャ ボックスを使用し、レンダリングを手動で管理することです。

他の方法の疑似シミュレートされた透過性は静かで非効率的であるため、これは断然最良のソリューションです。

于 2012-07-10T11:41:18.413 に答える