7

私の質問または問題は本当に奇妙だと確信していますが、これはそれです:

私は、右から左へのレイアウト (アラビア語) を持つ c# でプログラムを書いています。pictureBox次に、コントロールをフォームの背景画像に追加します。のドックをpictureBox塗りつぶすように設定したので、すべてのフォームになります。

写真には複数の色が含まれているデザインがあるため、ラベルを透明にして色を持たないようにし、ラベルpictureBox自体から色を取得します。ラベルを透明にする方法は次のとおりです。

label_customer_name.Parent = pictureBox1;

label_customer_name.BackColor = Color.Transparent;

この方法は、色を透明に変更するのに問題なく機能しますが、問題があります。ラベルの親を に設定すると、ラベルpictureBoxの位置が変わり、反対側に反映されます。たとえば、実行後に場所を X に設定した場合、場所はフォームの幅 - x になります。この問題を解決する方法はありますか?

私が簡単に探しているのは次のとおりです。

  1. 親をコンテナー コントロールに設定せずにラベルを透明にする他の方法はありますか? または

  2. のレイアウトを変更してPictureBox強制的に左から右にする方法。

ヒントとして面白いのは、タブ コントロールに を追加pictureBoxし、タブ コントロールを右から左に設定すると、タブ コントロールからpictureBoxレイアウトを取得するように見えるが、取得しないため、問題は消えます。フォーム自体から。

4

5 に答える 5

0

親を割り当てた後に場所が変更された場合は、ラベルの現在の場所を(x、y)と言って保持し、それに親を割り当ててから、その場所を(x、y)に再度設定できます。

また、ラベルコントロールを画像ボックスに追加して、別の方法で親を設定することもできます。

pictureBox1.Controls.Add(label_customer_name);

ラベルコントロールを透明にするもう1つの解決策は、ラベルコントロールの背景を画像ボックスの背景と同じように設定することです。背景にある色を割り当てることができます。(これは汚い解決策であり、私は個人的にこれを提案しません。)

于 2013-03-16T09:17:53.440 に答える
0

フォーム デザイナを使用すると、ラベル コントロールはフォームの子になります。それが白濁の原因です。InitializeComponent の後に、Parent プロパティを PictureBox オブジェクトに設定する必要があります。

InitializeComponent();
label1.Parent = pictureBox1;
label1.BackColor = Color.Transparent;
于 2013-04-12T10:45:53.703 に答える
0

コントロールを使用しFlowLayoutPanelます, 隠された要件に役立ちます.FlowDirection = RightToLeftとを設定できRightToLeft = Trueます. パネルの BackgroundImage を画像に配置し、そのパネルにラベルを追加します。

試してみてください。うまくいくはずです。

于 2013-03-12T16:50:27.430 に答える
0

次のようなことを試すことができます:

Image im = Image.FromFile("imagePath");
this.BackgroundImage = im;
this.BackgroundImageLayout = ImageLayout.Stretch;
this.DoubleBuffered = true;
于 2013-03-29T04:41:14.093 に答える