c#中的PictureBox布局问题

时间:2013-03-06 08:03:57

标签: c# winforms

我确信我的问题或问题确实很奇怪,但就是这样:

我正在用c#编写一个程序,它有一个从右到左的布局(阿拉伯语)。然后我将pictureBox控件添加为表单中的背景图像。我已将pictureBox的停靠点设置为填充,因此它将是所有表单。

由于图片有一些涉及多种颜色的设计,我想让标签透明,使其没有任何颜色,并且它将采用pictureBox本身的颜色。以下是我如何使标签透明:

label_customer_name.Parent = pictureBox1;

label_customer_name.BackColor = Color.Transparent;

此方法可以很好地将颜色更改为透明,但存在问题。当我将标签的父级设置为pictureBox时,它的位置会发生变化并在另一侧反映出来。例如,如果在执行后将位置设置为X,则位置将为格式width-x。知道怎么摆脱这个问题吗?

我正在寻找的是:

  1. 除非将父级设置为容器控件,否则还有其他方法可以使标签透明吗?或

  2. 如何更改PictureBox的布局并强制它从左到右。

  3. 正如提示和有趣的事情那样:如果我将pictureBox添加到选项卡控件并将选项卡控件设置为从右到左,问题就会消失,因为它似乎是pictureBox将从选项卡控件获取布局,但它不会从表单本身获取它。

5 个答案:

答案 0 :(得分:2)

使用GDI +绘制具有透明度的图像。

看到这一点。

http://www.codeproject.com/Articles/25048/How-to-Use-Transparent-Images-and-Labels-in-Window

祝你好运

答案 1 :(得分:0)

使用FlowLayoutPanel控件,该控件将用于隐藏要求,您可以设置FlowDirection = RightToLeftRightToLeft = True。 将面板的BackgroundImage放入图像并将标签添加到该面板。

试一试它应该有效。

答案 2 :(得分:0)

如果在分配父级后您的位置发生变化,您可以保留标签的当前位置说(x,y)并为其指定父级,然后再将其位置设置为(x,y)

另外您可以尝试将标签控件添加到图片框中,以不同的方式设置父级。

pictureBox1.Controls.Add(label_customer_name);

使标签控件透明的另一个解决方案是将标签控件的背景设置为与图片框背景类似。您可以指定背景中的颜色。 (这是一个肮脏的解决方案,我个人不建议这样做。)

答案 3 :(得分:0)

您可以尝试这样的事情:

Image im = Image.FromFile("imagePath");
this.BackgroundImage = im;
this.BackgroundImageLayout = ImageLayout.Stretch;
this.DoubleBuffered = true;

答案 4 :(得分:0)

使用表单设计器时,Label控件将成为表单的子项。 这是不透明的原因。我们需要将Parent属性设置为PictureBox 初始化组件后的对象。

InitializeComponent();
label1.Parent = pictureBox1;
label1.BackColor = Color.Transparent;