c#中的PictureBox布局问题
本文关键字:问题 布局 PictureBox 中的 | 更新日期: 2023-09-27 18:02:23
我相信我的问题或问题真的很奇怪,但这是它:
我正在用c#写一个程序,它有一个从右到左的布局(阿拉伯语)。然后,我将pictureBox
控件添加为表单中的背景图像。我已经将pictureBox
的底座设置为填充,所以它将是所有的形式。
由于图片有一些设计涉及到不止一种颜色,我想使标签透明,这样它就没有任何颜色,它将从pictureBox
本身获取颜色。下面是我让标签透明的方法:
label_customer_name.Parent = pictureBox1;
label_customer_name.BackColor = Color.Transparent;
这个方法可以很好地将颜色更改为透明,但有一个问题。当我将标签的父元素设置为pictureBox
时,它的位置会发生变化,并反映在另一边。例如,如果在执行后将位置设置为X,则位置将是表单宽度- X。任何想法如何摆脱这个问题?
我想找的是:
是否有其他方法使标签透明而不设置父容器控件?或者
如何改变
PictureBox
的布局,强制它从左到右
就像提示和有趣的事情是:如果我将pictureBox
添加到选项卡控件并将选项卡控件设置为从右到左,问题就消失了,因为似乎pictureBox
将从选项卡控件获得布局,但它不会从表单本身获得。
使用GDI+绘制具有透明度的图像。
看这个
http://www.codeproject.com/Articles/25048/How-to-Use-Transparent-Images-and-Labels-in-Window 好运使用FlowLayoutPanel
控件,这将为隐藏的需求服务,您可以设置FlowDirection = RightToLeft
和RightToLeft = True
。把面板的backgrounimage放到你的图像中,并给面板添加标签。
试一试,应该能行
如果你的位置在分配父标签后发生了变化,你可以保持标签的当前位置,比如(x,y),并为其分配父标签,然后再次将其位置设置为(x,y)
也可以尝试将标签控件添加到图片框中,以不同的方式设置parent。
pictureBox1.Controls.Add(label_customer_name);
使标签控件透明的另一个解决方案是将标签控件的背景设置为与图片框背景相似。你可以指定背景中的颜色。(这是一个肮脏的解决方案,我个人不会建议这样做。)
您可以尝试这样做:
Image im = Image.FromFile("imagePath");
this.BackgroundImage = im;
this.BackgroundImageLayout = ImageLayout.Stretch;
this.DoubleBuffered = true;
使用窗体设计器时,Label控件成为窗体的子控件。这是不透明的原因。我们需要将Parent属性设置为PictureBox
InitializeComponent();
label1.Parent = pictureBox1;
label1.BackColor = Color.Transparent;