![]() |
|
|
#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 |
|
#6
|
|||
|
|||
|
Ладно. Все понятно. Никто не хочет толком помогать. В принципе в наще время это вполне логично. Буду перебирать кучу литературы и изучать неизвестную для меня область Канвы
. Как будет готова, выложу готовую задачу на форум!!!!!!!!! |
|
#7
|
||||
|
||||
|
Цитата:
Ждем, альтруизм вообще ценю. Ждем... |
|
#8
|
||||
|
||||
|
Цитата:
|
|
#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
|
||||
|
||||
|
На какой строчке ошибку выдает?
|
|
#12
|
|||
|
|||
|
Сама программа работает как надо. Я просто на форум не могу загрузить ее. Я запаковываю все в архив, но не могу загрузить. Ошибка на рисунке ниже. А так все отлично
Размер архива 1,51Мб. |
|
#13
|
||||
|
||||
|
заливай на
http://rghost.ru/ |
|
#14
|
|||
|
|||
|
http://rghost.ru/42449697 Загрузил
|