Вопрос № 146721: Уважаемые,помогите пожалуйста осущесвить данную задач <img src="http://rusfaq.ru/images/Forum/10.gif" border="0"> Написать программу,выводящую Ваше имя и адрес так ,чтобы они всегда оставались центрированными посередине окна, даже если его разм...
Вопрос № 146.721
Уважаемые,помогите пожалуйста осущесвить данную задач Написать программу,выводящую Ваше имя и адрес так ,чтобы они всегда оставались центрированными посередине окна, даже если его размеры меняются.
Отвечает: Vest
Здравствуйте, Иванов Роман Александрович! Вы не указали где вы программируете и какими средствами (ОС, Framework) потому даю описание в целом: 1. при прорисовке окна (событие обычно называемое OnRedraw) вы должны получать горизонтальные и (если надо) вертикальные размеры ваше обновляемой области. 2. обязательно нужно знать ширину вашего текста (это предоставляется средствами отображения букв шрифта на вашем окне). Либо вы знаете ширину буквы (и если у вас моношрифт) то ширина слова - ширина буквы умноженная
на число букв в строке. Либо с помощью очередной функции можете определить ширину/высоту вашей строки. 3. Простая математика - центрование. Формула простая но я вам выведу ее: допустим ваше слово находится на расстоянии x от левой границы области. Длинна слова (в пикселях) - w, ширина окна - width. тогда если вам нужно чтобы слово было по середке, то: x + w + x = width, выражайте оттуда x: x = (width - w) / 2. Вот собственно и все. для высоты аналогично.
а дальше вторую, например, строку рисуете с той же вертикальной позиции, что и первую но прибавляете к этому числу высоту строки (чтобы не было наложений, лучше как в "тетрадке" это число принимать постоянным, равным, допустим высоте большой буквы) плюс некоторый интервал (отступ между строками). Почитайте Windows API, например, там есть объяснение как работать со шрифтами и про всякие отступы, выступы и прочее (раздел конечно же Fonts). Удачи Вам
--------- "Халявы не бывает" (c)
Ответ отправил: Vest (статус: 6-ой класс)
Ответ отправлен: 10.10.2008, 18:17
Отвечает: Rockie
Здравствуйте, Иванов Роман Александрович!
Вы не указали среду разработки. Программу за вас делать я не буду, зато могу объяснить принцып: Ловите событие Resize() и в обработчике этого события устанавливайте положение формы в середину(возможно в вашей среде разработки это свойство будет Position-> "Centered" формы)
Ответ отправил: Rockie (статус: 6-ой класс)
Ответ отправлен: 10.10.2008, 19:09