![]() |
|
#1
|
|||
|
|||
![]() Как сделать, чтобы 2 точки и диаметром 6 пикселей двигались, одна вверх, другая вниз. При этом имеется радионабор, где можно выбрать скорость точек (10, 20, 30 пикселей/с). Подскажите, одному очень хорошему человеку нужно помощь!!
|
#2
|
||||
|
||||
![]() "Одному очень хорошему человеку" лучше джентельменский набор подари: цветы, шоколадные конфеты, обещания которые не собираешься выполнять.
Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |
#3
|
|||
|
|||
![]() Цитата:
Причем тут цветы, подарки и т.д.?? Почему об этом разговор зашел?? Задачу мне просто попросили решить. А с канвой я до этого дела не имел. Я специализируюсь на программировании с Delphi с базами данных. Я не прошу полностью выполнить мне задачу, а прошу чтобы мне дали хотя бы подсказки как решить. Остальное я сам додумаюсь. Опыт небольшой в программировании на Delphi есть. Программист я только начинающий. Мне особенно интересует, как две точки нарисовать с диаметром 6 пикселей и чтобы они двигались, одна вверх, другая вниз. И скорость как этих точек задать. Это всего лишь половина задачи, но это и есть основа данной задачи. P.S. А обещания я всегда выполняю!!!!!!!!!! |
#4
|
|||
|
|||
![]() Цитата:
Цитата:
а было примерно так Цитата:
ну ты и растаял, хотя реально нифига не шариш ![]() угадал ? |
#5
|
||||
|
||||
![]() Цитата:
Код:
canvas.circle(x1, y1, x2, y2); canvas.pen.color canvas.brush.color canvas.brush.style — Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#6
|
|||
|
|||
![]() Ладно. Все понятно. Никто не хочет толком помогать. В принципе в наще время это вполне логично. Буду перебирать кучу литературы и изучать неизвестную для меня область Канвы
![]() |
#7
|
||||
|
||||
![]() Цитата:
Ждем, альтруизм вообще ценю. Ждем... Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |
#8
|
||||
|
||||
![]() Цитата:
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#9
|
||||
|
||||
![]() рисуй окружность через:
Код:
procedure Ellipse(X1, Y1, X2, Y2: Integer); overload; procedure Ellipse(const Rect: TRect); overload; Пишу программы за еду. __________________ |
#10
|
|||
|
|||
![]() Всем привет. Задачу выполнил. Вот само ее полное условие:
При нажатии кнопки "Пуск" одна точка диаметром 6 пикселей начинает двигаться вниз, а вторая - вверх. Расстояние между траекториями по горизонтали - 100 пикселей. Надо щелкнуть мышью по форме в момент минимального расстояния между точками. В окне должно выводиться расстояние между точками в момент щелчка по вертикали (+ точки не дошли, - перешли). Два радионабора задают скорости точек (10, 20, 30 пикселей/с). При щелчке кнопки останавливаются, а контекстным меню возвращаются в исходное состояние. Вот сам код. Решил сделать через Shape: Код:
unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Vcl.Menus, Vcl.StdCtrls; type TForm1 = class(TForm) Shape1: TShape; MainMenu1: TMainMenu; N1: TMenuItem; N2: TMenuItem; PopupMenu1: TPopupMenu; N3: TMenuItem; Shape2: TShape; Timer1: TTimer; Panel1: TPanel; Button1: TButton; Button2: TButton; RadioGroup1: TRadioGroup; procedure Timer1Timer(Sender: TObject); procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Button2Click(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure N3Click(Sender: TObject); procedure FormClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin timer1.Enabled:=True; // Включаем таймер end; procedure TForm1.Button2Click(Sender: TObject); begin timer1.Enabled:=False; // Приостанавливаем таимер end; procedure TForm1.FormClick(Sender: TObject); var a, b,c: integer; begin timer1.Enabled:=False; // Приостанавливаем таимер a:=Shape1.Top; // Запонимаем, где в текущий момент располагается первая точка; b:=Shape2.Top; // Запонимаем, где в текущий момент располагается вторая точка; c:=b-a; // Определяем расстояние между двумя точками //Если расстояние между точками - число положительное!! if c>0 then begin messagedlg('Расстояние между точками равно '+IntToStr(c) + #13+'Точки не дошли(+)',mtInformation,[mbOk],0); //Выводим сообщение end; //Если расстояние между точками - число отрицательное!! if c<0 then begin messagedlg('Расстояние между точками равно '+IntToStr(c)+#13+'Точки перешли(-)',mtInformation,[mbOk],0); //Выводим сообщение end; //Если расстояние между точками равно нулю!! if c=0 then begin messagedlg('Расстояние между точками равно '+IntToStr(c)+#13+'Точки параллельны',mtInformation,[mbOk],0); //Выводим сообщение end; end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin application.Terminate; // Завершаем работу. Принудительно удаляем программу из памяти. end; procedure TForm1.FormCreate(Sender: TObject); begin timer1.Enabled:=False; // Сделаем таймер неактивным RadioGroup1.ItemIndex:=0; // При запуске формы по умолчанию скорость равна end; procedure TForm1.N3Click(Sender: TObject); begin timer1.Enabled:=False; // Сделаем таймер неактивным shape1.Top:=237; // исходное состояние точки в момент запуска формы shape2.Top:=237; // исходное состояние точки в момент запуска формы end; procedure TForm1.Timer1Timer(Sender: TObject); begin // Множественный выбор case RadioGroup1.ItemIndex of 0: begin // Если выбрано 10 пикселей/c Shape1.Top:=Shape1.Top+10; Shape2.Top:=Shape2.Top-10; end; 1: begin // Если выбрано 20 пикселей/c Shape1.Top:=Shape1.Top+20 ; Shape2.Top:=Shape2.Top-20; end; 2: begin // Если выбрано 30 пикселей/c Shape1.Top:=Shape1.Top+30 ; Shape2.Top:=Shape2.Top-30; end; end; //Анализируем первую точку, т.е Shape1 if shape1.Top>=474 then shape1.Top:=0; // т.е. если первая точка достигла нижней границы формы // то перемещаем её в верхную границу формы и точка продолжает свое движение //Анализируем вторую точку, т.е. Shape2 if shape2.Top<=0 then shape2.Top:=474 // т.е. если вторая точка достигла верхней границы формы // то перемещаем ее в нижнюю границу формы и точка продолжает свое движение end; end. Сам скомпилированный проект вместе с кодом загрузить не удается. Ошибку выдает!! Последний раз редактировалось StudentMarat, 23.12.2012 в 12:27. |
#11
|
||||
|
||||
![]() На какой строчке ошибку выдает?
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#12
|
|||
|
|||
![]() Сама программа работает как надо. Я просто на форум не могу загрузить ее. Я запаковываю все в архив, но не могу загрузить. Ошибка на рисунке ниже. А так все отлично
![]() |
#13
|
||||
|
||||
![]() заливай на
http://rghost.ru/ — Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#14
|
|||
|
|||
![]() http://rghost.ru/42449697 Загрузил
|