|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Движение по окружности!)))
Все добрый вечер!) Вот такая вот проблема, я нарисовал фигуру это квадрат в него впасан ром а в ромб вписан круг, но теперь такая проблема я не магу заставить двигаться по окружности всю эту фигуру получаеться все время по диагонали: вот код:
Код:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TFigure = class public d,b,c,a,p,x,y,x1,y1,r,size,maxsize: Integer; //òåêóùèå êîîðä. òî÷êè Canvas: TCanvas; Constructor Create(NewX, NewY,NewSize,NewMaxSize : integer; NewCanvas : TCanvas); Procedure Show; Procedure Hide; Procedure Move; destructor destroy; override; end; TForm1 = class(TForm) Image1: TImage; Timer1: TTimer; Label1: TLabel; procedure Image1Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public Figure:TFigure; { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Image1Click(Sender: TObject); begin end; { TFigure } constructor TFigure.Create(NewX, NewY, NewSize, NewMaxSize: integer; NewCanvas: TCanvas); begin inherited Create; x:=NewX; y:=NewY; y1:=1; x:=250; y:=250; Size:=NewSize; MaxSize:=NewMaxSize; Canvas:=NewCanvas; show; end; destructor TFigure.destroy; begin hide; inherited destroy; end; procedure TFigure.Hide; begin canvas.Pen.Color:=ClBlack; Canvas.Brush.Color:=Clblue; canvas.Rectangle(x - (a div 2), y - (a div 2), x + (a div 2), y + (a div 2)); end; procedure TFigure.Move; begin end; procedure TFigure.Show; var c: array [1..4] of TPoint; b: integer; // Äëèíà äèàãîíàëè ðîìáà d: integer; // Äëèíà äèàãîíàëè êâàäðàòà è äèàìåòð êðóãà const a = 125; begin canvas.Pen.Color:=ClBlack; Canvas.Brush.Color:=Clblue; canvas.Rectangle(x - (a div 2), y - (a div 2), x + (a div 2), y + (a div 2)); d := Round(sqrt(2)*a); b := Round(sqrt(2)*d); c[1].x := x; c[1].y := y + (b div 4); c[2].x := x - (b div 4); c[2].y := y; c[3].x := x; c[3].y := y - (b div 4); c[4].x := x + (b div 4); c[4].y := y; canvas.Pen.Color:=ClBlack; Canvas.Brush.Color:=Clwhite; Canvas.Polygon(c); canvas.Pen.Color:=Clblack; //y,x,y+size ,x+size,// Canvas.Brush.Color:=Clred; //Canvas.ellipse(y,x,y+size ,x+size); Canvas.ellipse(x-(d div 4), y - (d div 4),x + (d div 4), y+(d div 4) ); end; procedure TForm1.FormCreate(Sender: TObject); begin Figure:=TFigure.Create(Image1.ClientWidth div 8, Image1.ClientWidth div 4, Image1.ClientWidth div 2 , Image1.ClientWidth, Image1.Canvas); end; end. |
#2
|
||||
|
||||
Был-бы я модератором, я бы вам за этот вопрос бан влупил. Вы бы хоть потрудились поиск по форуму сделать с тем-же вопросом.
http://www.delphisources.ru/forum/sh...ED%EE%F1%F2%E8 Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#3
|
|||
|
|||
но вы не модер так что не возмушайтесь! темболее я эт тему смотрел там про ромб расказываеться что его рисуют линиями лайнто и мув то я зделал это иначе и легче а вот движение е...ое
|
#4
|
||||
|
||||
ой, мне кажется, г-н Imikle будет недоволен...
weyner, чё ж тебе, не пересчитать по формуле движения координаты под свою мега-круто нарисованную фигуру? Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |