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

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

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

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

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

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

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

вообще я все сделал, кроме поворота, нужно вправо и влево, я не могу чет разобраться, вроде должно быть похоже на перемещение...
за ранее спасибо
вот весь мой код:

Код:
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm2 = class(TForm)
    Image1: TImage;
    Button1: TButton;
    Button4: TButton;
    Button3: TButton;
    Button2: TButton;
    Button7: TButton;
    Button8: TButton;
    Button9: TButton;
    Button6: TButton;
    Label1: TLabel;
    Label2: TLabel;
    RadioGroup1: TRadioGroup;
    procedure Button1Click(Sender: TObject);
    procedure Button8Click(Sender: TObject);
    procedure Button9Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
  TRct = class
    a,b:TPoint;
    constructor create;
    procedure draw; virtual;
    procedure Resize (k:Real);
    procedure move (dx, dy:Integer);
  end;

  TRct2 = class (TRct)
  procedure draw; Override;
  end;

var
  Form2: TForm2;
  fgr1: TRct;
  fgr2: TRctShadow;

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.x, a.y, b.x, b.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.x, a.y, b.x, b.y);
  end;
end;


 procedure TRct.move (dx, dy: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.x) div 2;
  c.y:=(a.y+b.y) div 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(Sender: TObject);      //Создание
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(Sender: TObject);  //Вверх
begin
fgr1.move(0,-10);
fgr1.draw;
end;

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

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

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

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

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

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

end.

Последний раз редактировалось KaZaaM; 26.05.2010 в 15:18.
KaZaaM вне форума Ответить с цитированием
Старый 26.05.2010, 15:37   #2
Z1000000
Форумчанин
 
Регистрация: 04.05.2010
Сообщений: 495
По умолчанию

Скинь весь проект.
Нажми на весы, поставь +
Для благодарностей : WebMoney WMR R252732729948
Z1000000 вне форума Ответить с цитированием
Старый 26.05.2010, 23:19   #3
KaZaaM
Пользователь
 
Регистрация: 26.12.2008
Сообщений: 52
По умолчанию

вот на весь проэкт, тока первоначально я делал для прямоугольников с тенями, поэтому в radiogroup выбор между пустым и с тенями, потом сделаю пустой и закрашенный, остальное все по заданию


http://files.mail.ru/4RTL7X
KaZaaM вне форума Ответить с цитированием
Старый 26.05.2010, 23:22   #4
KaZaaM
Пользователь
 
Регистрация: 26.12.2008
Сообщений: 52
По умолчанию

огромная просьба помочь до завтра, спасибо
KaZaaM вне форума Ответить с цитированием
Старый 27.05.2010, 08:59   #5
Z1000000
Форумчанин
 
Регистрация: 04.05.2010
Сообщений: 495
По умолчанию

Вот так как то.
Вложения
Тип файла: rar Rotate1.rar (184.7 Кб, 59 просмотров)
Нажми на весы, поставь +
Для благодарностей : WebMoney WMR R252732729948
Z1000000 вне форума Ответить с цитированием
Старый 27.05.2010, 09:38   #6
KaZaaM
Пользователь
 
Регистрация: 26.12.2008
Сообщений: 52
По умолчанию

спасибо огромное, очень выручил, ща доработаю, держи плюс
KaZaaM вне форума Ответить с цитированием
Старый 20.05.2012, 20:28   #7
tkoff
Новичок
Джуниор
 
Регистрация: 20.05.2012
Сообщений: 1
По умолчанию

как сделать прямоугольник с тенями, подскажите(((

процедура
Код:
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.x, a.y, b.x, b.y);
  end;
end;
tkoff вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Повернуть массив на 90 градусов HIP-H0P Помощь студентам 6 31.01.2012 23:46
повернуть экран на 180 градусов jihot Общие вопросы Delphi 4 10.04.2010 13:07
Delphi.Задача в форме. ant-igorevich Помощь студентам 5 25.11.2009 23:26
Как повернуть изображение в TextBox(e)? Diego__ Microsoft Office Word 10 18.08.2009 12:01
Повернуть ProgressBar Monstrodamus2007 Помощь студентам 9 17.02.2009 19:04