Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.06.2007, 11:26   #11
Трофимов Александр
Форумчанин
 
Аватар для Трофимов Александр
 
Регистрация: 03.11.2006
Сообщений: 321
По умолчанию

По-моему Вам человек нормально всё объяснил:
1. Там где описаны глобальные переменные
Var
MainForm:TForm;(это находится в самом верху)
Добавляешь строчку
BegX ,BegY :Integer;
2. В своём коде пишешь:
var
x:integer; // аргумент функции
y:integer ; // значение функциивточке x
a:integer;
x0:integer; // аргумент функции
y0:integer;
begin
with MainForm.Canvas do
begin
x0:=StrtoInt(MainForm.Edit1.Text);
y0:=StrtoInt(MainForm.Edit2.Text);
a:=StrtoInt(MainForm.Edit3.Text);
x:=x0*(a);
y:=y0*(a);
Определись, где будешь присваивать BegX значение -1, либо в OnGreate либо при объевлении переменной. Вычерчивание прямой уже будет выглядеть как:
If BegX<0 then
begin
MoveTo(300+x,y-a);
LineTo(x,y);
BegX :=x;
BegY:=y;
End
Else
Begin
MoveTo(BegX ,BegY);
LineTo(x,y);
End;
Трофимов Александр вне форума Ответить с цитированием
Старый 19.06.2007, 12:01   #12
Aleksandr
Форумчанин
 
Регистрация: 22.05.2007
Сообщений: 511
По умолчанию

Рисует но если я рисую третью прямую, четвертую и т.д. то получается с одной точки выходят лучи
Aleksandr вне форума Ответить с цитированием
Старый 19.06.2007, 13:13   #13
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Сколько можно объяснять?
Не надо перед каждым LineTo вызывать MoveTo , тем самым возвращая карандаш на исходную позицию.
Даже учитывая, что координаты для MoveTo будут правильно рассчитываться (что явно не так, раз лучи из одной точки), она там все равно не нужна, ведь прямые рисуются последовательно.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог

Последний раз редактировалось mutabor; 19.06.2007 в 13:19.
mutabor вне форума Ответить с цитированием
Старый 19.06.2007, 13:42   #14
Aleksandr
Форумчанин
 
Регистрация: 22.05.2007
Сообщений: 511
По умолчанию

Цитата:
Сообщение от mutabor Посмотреть сообщение
Сколько можно объяснять?
Не надо перед каждым LineTo вызывать MoveTo , тем самым возвращая карандаш на исходную позицию.
Даже учитывая, что координаты для MoveTo будут правильно рассчитываться (что явно не так, раз лучи из одной точки), она там все равно не нужна, ведь прямые рисуются последовательно.
А ты попробуй более доходчиво объяснить. А лучше всего кинь примерный код. пробовал убирал MoveTo ничего не дало

Последний раз редактировалось Aleksandr; 19.06.2007 в 13:45.
Aleksandr вне форума Ответить с цитированием
Старый 19.06.2007, 14:07   #15
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

The following code draws a line from the upper left corner of a form to the mouse position when the mouse is moved, creating a “rubber band” effect.
Следующий код рисует линию из верхнего левого угла формы до позиции мыши когда мышь движется, создавая эффект резиновой ленты.

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin

{ first call FillRect to paint the surface of the form.
this removes any previously drawn lines (and anything else!) }
{сперва вызовите FillRect чтобы закрасить поверхность формы,
это убирает все нарисованные до этого линии (и все остальное!)}
Canvas.FillRect(ClientRect);
Canvas.MoveTo(0, 0);
Canvas.LineTo(X, Y);
end;
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 19.06.2007, 14:10   #16
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

This example paints a white five pointed star in a paintbox control:
Этот пример рисует белую пятиконечную звезду в PaintBox

procedure TForm1.PaintBox1Paint(Sender: TObject);

begin
with Sender as TPaintBox do
begin
Canvas.Pen.Color := clWhite;
Canvas.Polyline([Point(40, 10), Point(20, 60), Point(70, 30),
Point(10, 30), Point(60, 60), Point(40, 10)]);
end;

end;
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 19.06.2007, 14:25   #17
Aleksandr
Форумчанин
 
Регистрация: 22.05.2007
Сообщений: 511
По умолчанию

Mutabor прости если чем обидел. Я не хотел просто немножко погорячился. Все это не то. Мне не нужно рисовать с помощью мыши. У меня следующая задача: имеется план местности на этом плане отмечаю начальную точку (кликаю мышью по нужному месту на карте т.е. где мы находимся) и эти координаты берутся за начало координат. Затем с помощью Edit'ов ввожу расстояние и угол (азимут) и на карте должен отобразиться маршрут. Например, 100 метров угол 30 градусов и должна рисоваться первая прямая по этим данным. Затем вводятся следующие данные и рисуется вторая прямая и так далее.
Aleksandr вне форума Ответить с цитированием
Старый 19.06.2007, 15:06   #18
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Это примеры из Дельфи хелпа функций LineTo, MoveTo и Poliline. Все они тебе нужны, ну может кроме Poliline если все точки сразу не известны.
И потом рисовать на канве формы не лучший выход, при обновлении (например при сворачивании, выхода за пределы экрана) все нарисованное тобой пропадет. Рисуй на канве Image или PaintBox.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 19.06.2007, 15:13   #19
Aleksandr
Форумчанин
 
Регистрация: 22.05.2007
Сообщений: 511
По умолчанию

Рисую я в paintBox. В прикрепелнном файле я бросил небольшое пояснение как должно работать. Надеюсь будет понятно. С созданием карты и загрузкой проблем нет. Проблема возникла в рисовании маршрута ( ломаной линии).

Последний раз редактировалось Aleksandr; 21.06.2007 в 14:37.
Aleksandr вне форума Ответить с цитированием
Старый 19.06.2007, 15:34   #20
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Про PaintBox я неправильно написал, там тот же принцип отрисовки что и на форме, будет пропадать.

//глобальные переменные
var x0,y0: integer; //точка отправления

PaintBox1.OnMouseDown
begin
x0:=x;//эти x и y это координаты мыши
y0:=y;
paintbox1.canvas.moveto(x,y);
end;

OnClick кнопка Записать
var x,y: integer; //точка прибытия
begin
//расчитываем точку прибытия взяв данные из эдитов и x0,y0. Не буду вникать, напиши сам
x:= ***;
y:= ***;
paintbox1.canvas.LineTo(x,y);
x0:=x;
y0:=y;
end;

Вот и все, если пользователь между расчетами не будет тыкать мышкой по карте, сбивая x0,y0 координаты, все будет ОК. Но лучше это учесть.

Могу предложить название программе Ivan Susanin Pro
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог

Последний раз редактировалось mutabor; 19.06.2007 в 16:30.
mutabor вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Построение поверхностей pushok Помощь студентам 1 04.02.2008 08:06
Построение графиков на C# TheGuardian123 Общие вопросы .NET 2 29.01.2008 14:50
(С++) Построение графика tg(x)=y. Panterka Помощь студентам 2 13.12.2007 09:32
Построение диаграммы Владислав Крюков Microsoft Office Excel 12 14.11.2007 23:50