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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.05.2010, 21:43   #1
KaZaaM
Пользователь
 
Регистрация: 26.12.2008
Сообщений: 52
Счастье delphi, разворот прямоугольника

текст задания: Используя принцип наследования, задать классы, описывающие обычные
прямоугольники и закрашенные. Предусмотреть выполнение с объектами этих классов следующих операций: создание, перемещение, масштабирование, удаление

осталось тока сделать разворот, вот весь остальной код:

PHP код:
unit Unit2;

interface

uses
  Windows
MessagesSysUtilsVariantsClassesGraphicsControlsForms,
  
DialogsStdCtrlsExtCtrls;

type
  TForm2 
= class(TForm)
    
Image1TImage;
    
Button1TButton;
    
Button4TButton;
    
Button3TButton;
    
Button2TButton;
    
Button7TButton;
    
Button8TButton;
    
Button9TButton;
    
Button6TButton;
    
Label1TLabel;
    
Label2TLabel;
    
RadioGroup1TRadioGroup;
    
procedure Button1Click(SenderTObject);
    
procedure Button8Click(SenderTObject);
    
procedure Button9Click(SenderTObject);
    
procedure Button2Click(SenderTObject);
    
procedure Button7Click(SenderTObject);
    
procedure Button4Click(SenderTObject);
    
procedure Button3Click(SenderTObject);
    
procedure Button6Click(SenderTObject);
  private
    { Private 
declarations }
  public
    { Public 
declarations }
  
end;
  
TRct = class
    
a,b:TPoint;
    
constructor create;
    
procedure drawvirtual;
    
procedure Resize (k:Real);
    
procedure move (dxdy:Integer);
  
end;

  
TRct2 = class (TRct)
  
procedure drawOverride;
  
end;

var
  
Form2TForm2;
  
fgr1TRct;
  
fgr2TRctShadow;

implementation

{$R *.dfm}
 
constructor TRct.Create;
 
begin
   a
.x:=(Form2.Image1.width div 2)-100;
   
b.x:=(Form2.Image1.width div 2)+100;
   
a.y:=(Form2.Image1.height div 2)-50;
   
b.y:=(Form2.Image1.height div 2)+50;
 
end;

procedure TRct.draw;
begin
 with Form2
.Image1.Canvas do
  
begin
   Brush
.Color:=clWhite;
   
FillRect(Form2.Image1.Canvas.ClipRect);
  
end;
  
Form2.Image1.Canvas.Rectangle(a.xa.yb.xb.y);
end;
procedure TRct2.draw;
begin
 with Form2
.Image1.Canvas do
  
begin
   Brush
.Color:=clWhite;
   
FillRect(Form2.Image1.Canvas.ClipRect);
   
     
Brush.Color:=clblack;
  
Form2.Image1.Canvas.Rectangle(a.xa.yb.xb.y);
  
end;
end;


 
procedure TRct.move (dxdy:Integer);
 
begin
   a
.x:=a.x+dx;
   
b.x:=b.x+dx;
   
a.y:=a.y+dy;
   
b.y:=b.y+dy;
 
end;

 
procedure TRct.Resize (k:Real);
 var
 
c:TPoint;
 
begin
  c
.x:=(a.x+b.xdiv 2;
  
c.y:=(a.y+b.ydiv 2;
  
a.x:=a.x+Round((c.x-a.x)*k);
  
a.y:=a.y+Round((c.y-a.y)*k);
  
b.x:=b.x+Round((c.x-b.x)*k);
  
b.y:=b.y+Round((c.y-b.y)*k);
 
end;
procedure TForm2.Button1Click(SenderTObject);      //Создание
begin
if RadioGroup1.ItemIndex 0 then
begin
fgr1
:=TRct.create;
fgr1.draw;
end;
if 
RadioGroup1.ItemIndex 1 then
begin
fgr1
:=TRct2.create;
fgr1.draw;
end;
end;

procedure TForm2.Button2Click(SenderTObject);  //Вверх
begin
fgr1
.move(0,-10);
fgr1.draw;
end;

procedure TForm2.Button3Click(SenderTObject);  //Увеличение
begin
fgr1
.Resize(-1);
fgr1.draw;
end;

procedure TForm2.Button4Click(SenderTObject); //Удаление
begin
Image1
.Canvas.Brush.Color:=clWhite;
Form2.Image1.Canvas.FillRect(Form2.Image1.Canvas.ClipRect);
end;

procedure TForm2.Button6Click(SenderTObject); //Уменьшение
begin
 fgr1
.Resize(0.5);
fgr1.draw;
end;

procedure TForm2.Button7Click(SenderTObject);    //Вниз
begin
fgr1
.move(0,10);
fgr1.draw;
end;

procedure TForm2.Button8Click(SenderTObject);    //Вправо
begin
fgr1
.move(10,0);
fgr1.draw;
end;

procedure TForm2.Button9Click(SenderTObject);    //Влево
begin
fgr1
.move(-10,0);
fgr1.draw;
end;

end
KaZaaM вне форума Ответить с цитированием
Старый 24.05.2010, 21:48   #2
KaZaaM
Пользователь
 
Регистрация: 26.12.2008
Сообщений: 52
По умолчанию

нужно дописать процедуру поворота вправо и влево, я примерно знаю как сделать, т.е. похожая с перемещением вправо влево вниз вверх, но чет не догоняю
KaZaaM вне форума Ответить с цитированием
Старый 24.05.2010, 22:54   #3
KaZaaM
Пользователь
 
Регистрация: 26.12.2008
Сообщений: 52
По умолчанию

подскажите плиз, завтра сдать надо, а я чет ваще недопераю и дома делфи нету чтоб проверить и задачу я всю написал, не прошу с нуля писать все
KaZaaM вне форума Ответить с цитированием
Старый 25.05.2010, 08:53   #4
KaZaaM
Пользователь
 
Регистрация: 26.12.2008
Сообщений: 52
По умолчанию

офигенно все помогли блин
KaZaaM вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Площадь прямоугольника AndrSil Помощь студентам 5 22.04.2010 23:23
Си, рекурсивный разворот списка 30MBU Помощь студентам 3 01.12.2009 17:20
Вращение прямоугольника Ponaroshku Паскаль, Turbo Pascal, PascalABC.NET 11 03.11.2009 09:22
Вращение прямоугольника Ponaroshku Общие вопросы Delphi 0 25.05.2009 23:09
Стороны прямоугольника Caragius Microsoft Office Excel 8 27.12.2008 03:02