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

2

使用 GDI+ 以透明方式绘制图像。

看到这个。

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

祝你好运

于 2013-04-28T19:26:00.523 回答
0

你可以尝试这样的事情:

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

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

试一试它应该可以工作。

于 2013-03-12T16:50:27.430 回答
0

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

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

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

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

pictureBox1.Controls.Add(label_customer_name);

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

于 2013-03-16T09:17:53.440 回答