Я хочу показать два номера в полноэкранном режиме,
друг над другом,
как вне зависимости от фактического размера экрана.Текст ярлыка слишком низкий
//getting screen size and setting window to maximized
Rectangle screenEdge = Screen.PrimaryScreen.Bounds;
this.Width = screenEdge.Width;
this.Height = screenEdge.Height;
this.FormBorderStyle = FormBorderStyle.FixedToolWindow;
this.WindowState = FormWindowState.Maximized;
//using 90% of width and 40% (times two) of height
int lWidth = (int)(this.Width * 0.9);
int lHeight = (int)(this.Height * 0.4);
//horiz. spacing: remainder, divided up for left and right
int lLeft = (this.Width - lWidth)/2;
//vert. spacing: remainder divided for top, bottom and between
int lTop = (this.Height - (2 * lHeight))/3 ;
//the labels holding the numbers
lSoll = new Label();
lIst = new Label();
//setting label lSoll to calc'd dimensions, adding & aligning text
lSoll.Left = lLeft;
lSoll.Width = lWidth;
lSoll.Top = lTop;
lSoll.Height = lHeight;
Font sollFont = new Font(FontFamily.GenericSansSerif, lSoll.Height);
Font sFSized = new Font(sollFont.FontFamily, lSoll.Height);
lSoll.Font = sFSized;
lSoll.TextAlign = ContentAlignment.MiddleCenter;
lSoll.ForeColor = Color.Blue;
lSoll.BackColor = Color.White;
updateSollText(42);
//same as above, just a bit lower
lIst.Left = lLeft;
lIst.Width = lWidth;
lIst.Top = lTop * 2 + lSoll.Height;
lIst.Height = lHeight;
Font istFont = new Font(FontFamily.GenericSansSerif, lIst.Height);
Font iFSized = new Font(istFont.FontFamily, lIst.Height);
lIst.Font = iFSized;
lIst.TextAlign = ContentAlignment.TopCenter;
lIst.ForeColor = Color.Red;
lIst.BackColor = Color.White;
updateIstText(39);
Проблема с этим кодом (кроме clumsyness):
Текст на этикетках отображается частично под метками нижние границы, т.е. невидимых, откроется в нижней части.
Я дважды проверил свои вычисления и обнаружил, что кроме ошибки округления 1 pt (вершины) все должно работать.
Я также попытался сделать шрифт меньше высоты этикетки, что помогло немного, но, конечно же, не было исправлено.
На самом деле, хотя textalign должен охватывать это, потому что это то, для чего оно предназначено.
чейнинга также высота-Comp (низкий средний сверху) TextAlign ничего не меняется, в то время как левый/центральный/правый делают различие ожидается
Что может быть причиной этого?
Метка всегда имеет немного отступов между ее краями и шрифтом, чтобы буквы не перекрывались с другими элементами управления. В вашем коде вы устанавливаете размер шрифта на высоту своей метки, ведь это никогда не подойдет. Почему бы не повернуть его и рассчитать высоту шрифта и поместить свойство autoEllipsis на ваш ярлык в true (делая его автоматическим масштабированием для текста). Обратите внимание, что вам все равно придется вручную использовать ширину метки, если вы хотите, чтобы она покрывала всю ширину формы. –