|
Вопрос # 5 691/ вопрос решён / |
|
Здравствуйте, уважаемые эксперты!
Подскажите пожалуйста как сделать что бы при запуске программы выводился текст на форме....дело в том что по нажатию кнопки все работает, а если прописать в FormCreate форма пуста...внизу код
Приложение: Переключить в обычный режим- procedure TForm1.FormCreate(Sender: TObject);
- var s:string;
- begin
- s:='Hello world';
- Canvas.Font.Size:=32;
- with Canvas do
- TextOut((ClientWidth-TextWidth(s)) div 2, (ClientHeight-textHeight(s)) div 2, s);
-
 |
Вопрос задал: vanechka (статус: Посетитель)
Вопрос отправлен: 25 октября 2011, 15:29
Состояние вопроса: решён, ответов: 1.
|
Ответ #1. Отвечает эксперт: DNK
Здравствуйте, vanechka!
Нужно четко себе представлять, когда можно работать с объектом Canvas, а именно, когда производится перерисовка визуального компонента системой. Например, для формы - это OnPaint, для других это может быть что-то вроде OnDraw, OnDrawItem и тп. В примере с кнопкой я полагаю тоже не всё гладко, наверняка если пронести над такой формой другую, то изображение на форме затрется. Поэтому код отрисовки нужно перенести в событие OnPaint.
 |
Ответ отправил: DNK (статус: Студент)
Время отправки: 25 октября 2011, 16:26
Оценка за ответ: 5
|
Мини-форум вопроса
Всего сообщений: 14; последнее сообщение — 26 октября 2011, 14:20; участников в обсуждении: 4.
|
vanechka (статус: Посетитель), 25 октября 2011, 15:30 [#1]:
Использовать нужно именно Canvas
|
|
DNK (статус: Студент), 25 октября 2011, 15:31 [#2]:
Бери всю эту шнягу и переноси OnPaint.
"Digital Networked Knight"
|
|
vanechka (статус: Посетитель), 25 октября 2011, 15:39 [#3]:
Спасибо! все работает!
|
|
min@y™ (статус: Доктор наук), 25 октября 2011, 15:39 [#4]:
Цитата (DNK):
Бери всю эту шнягу и переноси OnPaint.
Да, можно и в OnPaint формы отрисовку запихать, однако, проще, ИМХО, юзать специально заточенный под это дело компонент TPaintBox (в его событии OnPaint). Положить его на TPanel, с цвет которой будет цветом фона.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
25 октября 2011, 15:42: Статус вопроса изменён на решённый (изменил автор вопроса — vanechka)
|
min@y™ (статус: Доктор наук), 25 октября 2011, 15:43 [#5]:
В качестве примера (как это выглядит на практике) можешь глянуть мой ответ на вопрос 5672.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
vanechka (статус: Посетитель), 25 октября 2011, 15:57 [#6]:
Выглядит все это конечно круто! Но меня сроки поджимают. Задание звучит так "После запуска программы на экране должна отображаться отцентрированная текстовая строка, а также шарик, прыгающий по буквам строки по траектории в виде полукруга" Какой вариант лучше будет?
|
25 октября 2011, 15:59: Вопрос вновь открыт (изменение состояния произвёл автор вопроса — vanechka)
|
min@y™ (статус: Доктор наук), 25 октября 2011, 16:00 [#7]:
Цитата (vanechka):
адание звучит так "После запуска программы на экране должна отображаться отцентрированная текстовая строка, а также шарик, прыгающий по буквам строки по траектории в виде полукруга"
Это я уже слышал.
Цитата (vanechka):
Какой вариант лучше будет?
Я ж сказал, с TPaintBox удобнее, ИМХО.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
vanechka (статус: Посетитель), 25 октября 2011, 16:11 [#8]:
Компоненты Image и PaintBox представляют собой некоторую ограниченную поверхность с канвой, на которую можно заносить изображения. При этом компонент PaintBox, собственно говоря, не дает ничего нового по сравнению с рисованием на канве формы. Рисование на PaintBox вместо формы не имеет никаких преимуществ, кроме, может быть, некоторого облегчения в расположении одного или нескольких рисунков в площади окна.
http://beluch.ru/progr/100comp/4_3.htm если верить этому ресурсу
|
|
DNK (статус: Студент), 25 октября 2011, 16:28 [#9]:
vanechka: подчас это кроме может вылиться бальшой гемор
"Digital Networked Knight"
|
|
bugmenot (статус: 3-ий класс), 25 октября 2011, 16:46 [#10]:
DNK: на TImage можно рисовать когда не хочется морочиться с событиями
виконання програми розпочинається з того самого мiсця, де призупинилося.
|
|
min@y™ (статус: Доктор наук), 25 октября 2011, 16:51 [#11]:
Цитата (bugmenot):
на TImage можно рисовать когда не хочется морочиться с событиями
Если рисовать меняющуюся картинку (анимацию), то придётся ещё и стирать предыдущие кадры. Моргать будет некисло.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
bugmenot (статус: 3-ий класс), 26 октября 2011, 13:16 [#12]:
Цитата (min@y™):
Моргать будет некисло.
Не будет, ради этого и задумывалосьЦитата (min@y™):
придётся ещё и стирать предыдущие кадры Спасибо, кэп!
виконання програми розпочинається з того самого мiсця, де призупинилося.
|
|
min@y™ (статус: Доктор наук), 26 октября 2011, 13:41 [#13]:
Цитата (bugmenot):
Не будет, ради этого и задумывалось
Прочитай вопрос ещё раз.
Цитата (bugmenot):
Спасибо, кэп!
Не за что!
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
bugmenot (статус: 3-ий класс), 26 октября 2011, 14:20 [#14]:
Цитата (min@y™):
Прочитай вопрос ещё раз.
Дык у поциэнта ничего не вышло именно потому, что не имеет ни малейшего понятия как работает отрисовка окон. А TImage его бы изолировал от этого и одним банальным вопросом было бы меньше.
виконання програми розпочинається з того самого мiсця, де призупинилося.
|
26 октября 2011, 15:41: Статус вопроса изменён на решённый (изменил автор вопроса — vanechka)
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|