C# c语言中的PictureBox布局问题#

C# c语言中的PictureBox布局问题#,c#,winforms,C#,Winforms,我确信我的问题真的很奇怪,但就是这样: 我正在用c#编写一个程序,它有一个从右到左的布局(阿拉伯语)。然后,我将pictureBox控件添加为表单中的背景图像。我已将图片盒的停靠点设置为填充,因此它将成为所有表单 由于图片有一些涉及多种颜色的设计,我想使标签透明,这样它就没有任何颜色,并且它将从图片盒本身获取颜色。下面是我如何使标签透明的: label_customer_name.Parent = pictureBox1; label_customer_name.BackColor = Col

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

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

由于图片有一些涉及多种颜色的设计,我想使标签透明,这样它就没有任何颜色,并且它将从
图片盒
本身获取颜色。下面是我如何使标签透明的:

label_customer_name.Parent = pictureBox1;

label_customer_name.BackColor = Color.Transparent;
此方法可以很好地将颜色更改为透明,但存在一个问题。当我将标签的父项设置为
pictureBox
时,标签的位置会发生变化,并在另一侧反映出来。例如,如果执行后将位置设置为X,则该位置将为表单宽度-X。你知道怎么解决这个问题吗

简而言之,我想要的是:

  • 有没有其他方法可以在不将父控件设置为容器控件的情况下使标签透明?或

  • 如何更改PictureBox的布局并强制其从左向右


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

    使用用于隐藏需求的
    FlowLayoutPanel
    控件,您可以设置
    FlowDirection=RightToLeft
    RightToLeft=True
    。 将面板的背景图像放到您的图像中,并将标签添加到该面板


    试试看,它应该可以工作。

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

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

    pictureBox1.Controls.Add(label_customer_name);
    

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

    您可以尝试以下方法:

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

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

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

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

    看这个


    祝你好运

    也许你可以使用
    form.BackgroundImage
    而不是pictureBox(不知道它是否对标签有帮助,因为在我看来,当你以编程方式添加标签时,你还必须处理
    锚定
    ,不知道它如何与RTL一起工作)。亲爱的兄弟,谢谢你的评论。我尝试过这种解决方案,但问题是,当增加论坛规模时,图片显示不好?你知道怎么修吗?把它放在面板上怎么样?如果tab控件解决了您的问题,则可以使用面板进行不可见的简单修复。亲爱的兄弟,该面板具有从右到左的属性,但没有可以更改的从右到左的布局。点击控件具有从右到左和从右到左的布局属性。请检查此问题/答案;看起来像你的问题:如果这是最好的答案,点击复选标记来标记它。