我有一个带有文字的标签我可以每次更改标签尺寸或标签字体大小并多次检查但是也许有办法计算它:
label18.Text = "מכם מזג האוויר איננו פעיל כרגע";
这就是我现在看到的文字:
红色的文字是希伯来文,这是我要改变它的大小的文字,也是根据图片框1顶部不在左边的文字把它放在中间。
我做了一个黑色的圆圈只是为了表明我的意思是“距离pictureBox1顶部的距离,几乎是form1的顶部”。 我的意思是从图片框1上方的灰色区域和顶部的form1白色区域只有这个灰色区域我想在这个高度和中间制作文本。 我该如何计算这两个值?
我尝试了这个,但它不在中间:
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;
答案 0 :(得分:4)
您不需要图形或测量任何东西。只需在设计师text align = middlecenter
和autosize = 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窗体相对简单:
Dock
,应将其设置为Top
。AutoSize
属性更改为false
。TextAlign
属性更改为MiddleCentre
。应该这样做。
答案 3 :(得分:-1)
有多种方法可以实现这一目标。
我建议如下:
从我输入的位置没有视觉效果所以不能做完整的代码示例。
你已经完成了。