2

Windowsフォームのユーザーコントロール(ラジオボタンと3つのラベルと1つのプログレスバーで構成されています)で単純な棒人間を作成しました。

新しいユーザーコントロールの背景色を透明に設定して、フォームにドラッグしたときに、フォーム上の他の色や描画と混ざり合うようにしました。達成しようとしていることが得られません。

これが写真です:

ここに画像の説明を入力してください

4

3 に答える 3

11

UserControl は既にこれをサポートしており、その ControlStyles.SupportsTransparentBackColor スタイル フラグは既にオンになっています。BackColor プロパティを Color.Transparent に設定するだけです。

次に、この透明度がシミュレートされることを覚えておく必要があります。これは、コントロールの親にそれ自体を描画して背景を生成するように要求することによって行われます。したがって、重要なのは、Parent セットを正しく取得することです。親がコンテナー コントロールでない場合、これを行うには少し注意が必要です。ピクチャーボックスのように。デザイナーはフォームを親にするので、画像ボックスではなく、フォームの背景が表示されます。コードでこれを修正し、フォーム コンストラクターを編集して、次のようにする必要があります。

var pos = this.PointToScreen(userControl11.Location);
userControl11.Parent = pictureBox1;
userControl11.Location = pictureBox1.PointToClient(pos);
于 2013-01-13T17:55:52.833 に答える
4

コンストラクターで、透明な背景色をサポートするコントロールのスタイルを設定します

SetStyle(ControlStyles.SupportsTransparentBackColor, true);

次に、背景を透過色に設定します

this.BackColor = Color.Transparent;

MSDNから

より複雑なアプローチ (およびおそらく有効なアプローチ) については、こちらで説明していCreateParamsますOnPaint

于 2013-01-13T17:18:27.463 に答える