如何计算从pictureBox1顶部到form1顶部的距离?

时间:2014-10-04 14:15:56

标签: c# .net winforms

我有一个带有文字的标签我可以每次更改标签尺寸或标签字体大小并多次检查但是也许有办法计算它:

label18.Text = "מכם מזג האוויר איננו פעיל כרגע";

这就是我现在看到的文字:

Text

红色的文字是希伯来文,这是我要改变它的大小的文字,也是根据图片框1顶部不在左边的文字把它放在中间。

我做了一个黑色的圆圈只是为了表明我的意思是“距离pictureBox1顶部的距离,几乎是form1的顶部”。 我的意思是从图片框1上方的灰色区域和顶部的form1白色区域只有这个灰色区域我想在这个高度和中间制作文本。 我该如何计算这两个值?

我尝试了这个,但它不在中间:

Not middle

SizeF size = label18.CreateGraphics().MeasureString(label18.Text, label18.Font);
label18.Left = (pictureBox1.Width / 2) - (((int)size.Width) / 2) + pictureBox1.Left;
label18.Top = pictureBox1.Top - 20;

4 个答案:

答案 0 :(得分:4)

您不需要图形或测量任何东西。只需在设计师text align = middlecenterautosize = true

中进行设置即可
label18.Location = new Point(pictureBox1.Location.X + (pictureBox1.Width / 2 - label18.Width / 2, 
                             pictureBox1.Location.Y - label18.Height);

答案 1 :(得分:2)

要使标签居中,需要它获得实际尺寸,然后使用另一个控件将其居中使用一些简单的数学运算来获得控件的坐标(参见下面的示例1)。我不知道灰色条是什么控件,但你可以通过使用size.Width属性并进行相同类型的计算来处于中心位置。

如果你想填充灰色条,我添加了例2。

示例1:

private void CenterLabel()
{
    //get the size of the text (you could do this before hand if needed)
    SizeF size = label18.CreateGraphics().MeasureString(label18.Text, label18.Font);

    //center over picture box control and slightly above
    label18.Left = (pictureBox1.Width / 2) - (((int)size.Width) / 2)  + pictureBox1.Left;
    label18.Top = pictureBox1.Top - 20;
}

示例2

private void CenterLabel()
{
    int fontHeightPixels = (int)(greyBar.Height * .85);
    Font font = new System.Drawing.Font("Arial", fontHeightPixels, FontStyle.Regular, GraphicsUnit.Pixel);

    string text = "I am centered";

    //get the size of the text (you could do this before hand if needed)
    SizeF size = label18.CreateGraphics().MeasureString(text, font);

    label18.Font = font;
    label18.Text = text;

    //center over picture box control and slightly above
    label18.Left = (pictureBox1.Width / 2) - (((int)size.Width) / 2) + pictureBox1.Left;
    label18.Top = (greyBar.Height / 2) - (((int)size.Height) / 2) + greyBar.Top;            
}

答案 2 :(得分:1)

Windows窗体相对简单:

  1. 通过在Forms设计器中设置相应的属性,将标签停靠在表单顶部。您要设置的属性为Dock,应将其设置为Top
  2. 将标签的AutoSize属性更改为false
  3. 根据需要更改标签的高度。
  4. 将标签的TextAlign属性更改为MiddleCentre
  5. 应该这样做。

答案 3 :(得分:-1)

有多种方法可以实现这一目标。

我建议如下:

  1. 首先计算图片框的宽度(picturebox.Width)
  2. 找到图片框所在表格上的坐标(picturebox.Location)图片框属性)
  3. 然后更改标签控件的位置 - >到Label.Location.X =(picturebox.Width / 2)和Label.Location.Y = picturebox.Location.Y ==>现在你已经正确放置了标签。
    1. 下一步将标签控件的高度设置为Picturebox的顶部(窗体边缘和图片框之间的距离)值。
  4. 从我输入的位置没有视觉效果所以不能做完整的代码示例。

    你已经完成了。