Консультация № 146721
10.10.2008, 14:53
0.00 руб.
0 6 2
Уважаемые,помогите пожалуйста осущесвить данную задач
Написать программу,выводящую Ваше имя и адрес так ,чтобы они всегда оставались центрированными посередине окна, даже если его размеры меняются.

Обсуждение

Неизвестный
10.10.2008, 16:10
общий
То есть, программа для Windows?
Неизвестный
10.10.2008, 18:17
общий
это ответ
Здравствуйте, Иванов Роман Александрович!
Вы не указали где вы программируете и какими средствами (ОС, Framework) потому даю описание в целом:
1. при прорисовке окна (событие обычно называемое OnRedraw) вы должны получать горизонтальные и (если надо) вертикальные размеры ваше обновляемой области.
2. обязательно нужно знать ширину вашего текста (это предоставляется средствами отображения букв шрифта на вашем окне). Либо вы знаете ширину буквы (и если у вас моношрифт) то ширина слова - ширина буквы умноженная на число букв в строке. Либо с помощью очередной функции можете определить ширину/высоту вашей строки.
3. Простая математика - центрование. Формула простая но я вам выведу ее:
допустим ваше слово находится на расстоянии x от левой границы области. Длинна слова (в пикселях) - w, ширина окна - width. тогда если вам нужно чтобы слово было по середке, то: x + w + x = width, выражайте оттуда x: x = (width - w) / 2.
Вот собственно и все. для высоты аналогично. а дальше вторую, например, строку рисуете с той же вертикальной позиции, что и первую но прибавляете к этому числу высоту строки (чтобы не было наложений, лучше как в "тетрадке" это число принимать постоянным, равным, допустим высоте большой буквы) плюс некоторый интервал (отступ между строками).
Почитайте Windows API, например, там есть объяснение как работать со шрифтами и про всякие отступы, выступы и прочее (раздел конечно же Fonts).
Удачи Вам
Неизвестный
10.10.2008, 19:09
общий
это ответ
Здравствуйте, Иванов Роман Александрович!

Вы не указали среду разработки. Программу за вас делать я не буду, зато могу объяснить принцып:
Ловите событие Resize() и в обработчике этого события устанавливайте положение формы в середину(возможно в вашей среде разработки это свойство будет Position-> "Centered" формы)
Неизвестный
10.10.2008, 19:17
общий
Ну вот, а я уже для BeOS стал делать
Неизвестный
13.10.2008, 08:58
общий
Ой извиняюсь господа! Среда MS Visual 2005 C++
Неизвестный
13.10.2008, 17:29
общий
ну-у-у,товарищ.... хоть бы оценку поставили :(
я не знаю под какой фреймворк вы прогаете, под MFC или WinAPI. Повторяю еще раз - посмотрите в в MSDN те разделы которые я указал. Поищите Fonts, Text, GDI...
Форма ответа