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

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

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.12.2008, 01:08   #1
Надежда..
Пользователь
 
Регистрация: 13.12.2008
Сообщений: 12
Вопрос Как мне в визуальном программировании написать программу увеличения масштаба и уменьшения до исчезновения

чтоб ударялся об стенки КАК ТОЛЬКО ПРИКАСАЕТСЯ.
Код:

unit Canvas_Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, ExtCtrls;
 
type
  TForm1 = class(TForm)
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    N4: TMenuItem;
    N5: TMenuItem;
    N6: TMenuItem;
    Timer1: TTimer;
    Timer2: TTimer;
    procedure FormPaint(Sender: TObject);
    procedure N6Click(Sender: TObject);
    procedure FormActivate(Sender: TObject);
    procedure N2Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure N3Click(Sender: TObject);
    procedure Timer2Timer(Sender: TObject);
 
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
 
implementation
 
{$R *.dfm}
 
procedure TForm1.FormPaint(Sender: TObject);
var x1, y1, x, y:integer;
 
begin
x1:=250;
y1:=250;
 
with canvas do
begin
 
 
  Form1.Canvas.pen.Color:=clBlack;
   //telo
  Form1.Canvas.Brush.Color:=clGray;
  Form1.Canvas.Ellipse(x1-100,y1-125,x1,y1);
    //golova
  Form1.Canvas.Brush.Color:=clWhite;
  Form1.Canvas.Ellipse(x1-80,y1-160,x1-20,y1-100);
     //lapki
  Form1.Canvas.Brush.Color:=clBlack;
  Form1.Canvas.Ellipse(x1-40,y1-5,x1-15,y1+5);
  Form1.Canvas.Ellipse(x1-60,y1-5,x1-85,y1+5);
      //glazki
  Form1.Canvas.Brush.Color:=clGreen;
  Form1.Canvas.Ellipse(x1-55,y1-125,x1-65,y1-145);
 
  Form1.Canvas.Ellipse(x1-45,y1-125,x1-35,y1-145);
 
      //ushki
      
  Form1.Canvas.MoveTo(x1-85,y1-165);
  Form1.Canvas.LineTo(x1-75,y1-145);
  Form1.Canvas.MoveTo(x1-85,y1-165);
  Form1.Canvas.LineTo(x1-65,y1-155);
  Form1.Canvas.MoveTo(x1-15,y1-165);
  Form1.Canvas.LineTo(x1-25,y1-145);
  Form1.Canvas.MoveTo(x1-15,y1-165);
  Form1.Canvas.LineTo(x1-35,y1-155);
 
    //nosik
      Form1.Canvas.Brush.Color:=clWhite;
      Form1.Canvas.Ellipse(x1-55,y1-120,x1-45,y1-114);
      Form1.Canvas.MoveTo(x1-50,y1-114);
      Form1.Canvas.LineTo(x1-50,y1-110);
      Form1.Canvas.MoveTo(x1-55,y1-110);
      Form1.Canvas.LineTo(x1-45,y1-110);
 
    //ruchki  //l
    Form1.Canvas.MoveTo(x1-65,y1-65);
    Form1.Canvas.LineTo(x1-65,y1-55);
    Form1.Canvas.LineTo(x1-67,y1-48);
    Form1.Canvas.LineTo(x1-70,y1-50);
 
   // Form1.Canvas.LineTo(x1-75,y1-60);
 
     //ruchki  //r
     Form1.Canvas.MoveTo(x1-35,y1-65);
     Form1.Canvas.LineTo(x1-35,y1-55);
     Form1.Canvas.LineTo(x1-33,y1-48);
     Form1.Canvas.LineTo(x1-30,y1-50);
    // Form1.Canvas.LineTo(y1-25,y1-60);
 
     //hvostik
     Form1.Canvas.Brush.Color:=clYellow;
     Form1.Canvas.MoveTo(x1-25,y1-5);
     Form1.Canvas.LineTo(x1+10,y1-15);
     Form1.Canvas.LineTo(x1+25,y1-35);
     Form1.Canvas.LineTo(x1+50,y1-120);
        
     Form1.Canvas.Arc(x1+50,y1-130,x1+30,y1-110,x1+50,y1-120,x1+30,y1-120);
     Form1.Canvas.MoveTo(x1+30,y1-120);
     Form1.Canvas.LineTo(x1+5,y1-35);
     Form1.Canvas.LineTo(x1-20,y1-15);
    //zrachki
     Form1.Canvas.brush.Color:=clBlack;
     Form1.Canvas.Ellipse(x1-58,y1-137,x1-62,y1-133);
 
     Form1.Canvas.Ellipse(x1-42,y1-137,x1-38,y1-133);
 
end;
end;
 
procedure TForm1.N6Click(Sender: TObject);
begin
 Application.Terminate;
end;
 
 
Var x,y,dx, dy:integer;
procedure TForm1.FormActivate(Sender: TObject);
begin
 x:=10;
 y:=200;
 dx:=5;
 dy:=5;
 Timer1.Interval:=100;
 Timer2.Interval:=100;
 Form1.Canvas.Brush.Color:=Form1.Color;
 Randomize;
  x := Random(ClientWidth); if x <135 then x:=0;
  y := Random(ClientHeight); if y <0 then y:= 0;
end;
Надежда.. вне форума Ответить с цитированием
Старый 27.12.2008, 01:10   #2
Надежда..
Пользователь
 
Регистрация: 13.12.2008
Сообщений: 12
По умолчанию

Код:

var nap:boolean;                                     //горизонталь
procedure TForm1.N2Click(Sender: TObject);
begin
  Form1.Canvas.pen.Color:=Form1.Color;
   //telo
  Form1.Canvas.Brush.Color:=Form1.Color;
  Form1.Canvas.Ellipse(x-100,y-125,x,y);
    //golova
  Form1.Canvas.Brush.Color:=Form1.Color;
  Form1.Canvas.Ellipse(x-80,y-160,x-20,y-100);
     //lapki
  Form1.Canvas.Brush.Color:=Form1.Color;
  Form1.Canvas.Ellipse(x-40,y-5,x-15,y+5);
  Form1.Canvas.Ellipse(x-60,y-5,x-85,y+5);
      //glazki
  Form1.Canvas.Brush.Color:=Form1.Color;
  Form1.Canvas.Ellipse(x-55,y-125,x-65,y-145);
 
  Form1.Canvas.Ellipse(x-45,y-125,x-35,y-145);
 
     //ushki
Form1.Canvas.MoveTo(x-85,y-165);
Form1.Canvas.LineTo(x-75,y-145);
Form1.Canvas.MoveTo(x-85,y-165);
Form1.Canvas.LineTo(x-65,y-155);
Form1.Canvas.MoveTo(x-15,y-165);
Form1.Canvas.LineTo(x-25,y-145);
Form1.Canvas.MoveTo(x-15,y-165);
Form1.Canvas.LineTo(x-35,y-155);
 
 
    //nosik
  Form1.Canvas.Brush.Color:=Form1.Color;
  Form1.Canvas.Ellipse(x-55,y-120,x-45,y-114);
  Form1.Canvas.MoveTo(x-50,y-114);
  Form1.Canvas.LineTo(x-50,y-110);
  Form1.Canvas.MoveTo(x-55,y-110);
  Form1.Canvas.LineTo(x-45,y-110);
 
    //ruchki  //l
  Form1.Canvas.MoveTo(x-65,y-65);
  Form1.Canvas.LineTo(x-65,y-55);
  Form1.Canvas.LineTo(x-67,y-48);
  Form1.Canvas.LineTo(x-70,y-50);
 
  //  Form1.Canvas.LineTo(x-75,y-60);
 
     //ruchki  //r
  Form1.Canvas.MoveTo(x-35,y-65);
  Form1.Canvas.LineTo(x-35,y-55);
  Form1.Canvas.LineTo(x-33,y-48);
  Form1.Canvas.LineTo(x-30,y-50);
   // Form1.Canvas.LineTo(y-25,y-60);
 
     //hvostik
  Form1.Canvas.Brush.Color:=Form1.Color;
  Form1.Canvas.MoveTo(x-25,y-5);
  Form1.Canvas.LineTo(x+10,y-15);
  Form1.Canvas.LineTo(x+25,y-35);
  Form1.Canvas.LineTo(x+50,y-120);
        
  Form1.Canvas.Arc(x+50,y-130,x+30,y-110,x+50,y-120,x+30,y-120);
  Form1.Canvas.MoveTo(x+30,y-120);
  Form1.Canvas.LineTo(x+5,y-35);
  Form1.Canvas.LineTo(x-20,y-15);
    //zrachki
  Form1.Canvas.brush.Color:=Form1.Color;
  Form1.Canvas.Ellipse(x-58,y-137,x-62,y-133);
 
  Form1.Canvas.Ellipse(x-42,y-137,x-38,y-133);
 
  If nap=False Then
   Begin
    x:=x+dx;
   End
   Else
  Begin
   x:=x-dx;
  End;
  If X+50>=Form1.Width Then
   Begin
    nap:=True;
   End;
   If X-100=0 Then
   Begin
    nap:=False;
   End;
   {FormPaint(Sender);}
   Form1.Canvas.pen.Color:=clBlack;
   //telo
  Form1.Canvas.Brush.Color:=clGray;
  Form1.Canvas.Ellipse(x-100,y-125,x,y);
    //golova
  Form1.Canvas.Brush.Color:=clWhite;
  Form1.Canvas.Ellipse(x-80,y-160,x-20,y-100);
     //lapki
  Form1.Canvas.Brush.Color:=clBlack;
  Form1.Canvas.Ellipse(x-40,y-5,x-15,y+5);
  Form1.Canvas.Ellipse(x-60,y-5,x-85,y+5);
      //glazki
  Form1.Canvas.Brush.Color:=clGreen;
  Form1.Canvas.Ellipse(x-55,y-125,x-65,y-145);
 
  Form1.Canvas.Ellipse(x-45,y-125,x-35,y-145);
 
     //ushki
Form1.Canvas.MoveTo(x-85,y-165);
Form1.Canvas.LineTo(x-75,y-145);
Form1.Canvas.MoveTo(x-85,y-165);
Form1.Canvas.LineTo(x-65,y-155);
Form1.Canvas.MoveTo(x-15,y-165);
Form1.Canvas.LineTo(x-25,y-145);
Form1.Canvas.MoveTo(x-15,y-165);
Form1.Canvas.LineTo(x-35,y-155);
 
 
    //nosik
  Form1.Canvas.Brush.Color:=clWhite;
  Form1.Canvas.Ellipse(x-55,y-120,x-45,y-114);
  Form1.Canvas.MoveTo(x-50,y-114);
  Form1.Canvas.LineTo(x-50,y-110);
  Form1.Canvas.MoveTo(x-55,y-110);
  Form1.Canvas.LineTo(x-45,y-110);
 
    //ruchki  //l
  Form1.Canvas.MoveTo(x-65,y-65);
  Form1.Canvas.LineTo(x-65,y-55);
  Form1.Canvas.LineTo(x-67,y-48);
  Form1.Canvas.LineTo(x-70,y-50);
 
  //  Form1.Canvas.LineTo(x-75,y-60);
 
     //ruchki  //r
  Form1.Canvas.MoveTo(x-35,y-65);
  Form1.Canvas.LineTo(x-35,y-55);
  Form1.Canvas.LineTo(x-33,y-48);
  Form1.Canvas.LineTo(x-30,y-50);
 //   Form1.Canvas.LineTo(y-25,y-60);
 
     //hvostik
  Form1.Canvas.Brush.Color:=clYellow;
  Form1.Canvas.MoveTo(x-25,y-5);
  Form1.Canvas.LineTo(x+10,y-15);
  Form1.Canvas.LineTo(x+25,y-35);
  Form1.Canvas.LineTo(x+50,y-120);
 
  Form1.Canvas.Arc(x+50,y-130,x+30,y-110,x+50,y-120,x+30,y-120);
  Form1.Canvas.MoveTo(x+30,y-120);
  Form1.Canvas.LineTo(x+5,y-35);
  Form1.Canvas.LineTo(x-20,y-15);
    //zrachki
  Form1.Canvas.brush.Color:=clBlack;
  Form1.Canvas.Ellipse(x-58,y-137,x-62,y-133);
 
  Form1.Canvas.Ellipse(x-42,y-137,x-38,y-133);
  Timer1.Enabled:=true;
end;
Надежда.. вне форума Ответить с цитированием
Старый 27.12.2008, 01:11   #3
Надежда..
Пользователь
 
Регистрация: 13.12.2008
Сообщений: 12
По умолчанию

Код:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  N2Click(Sender);
end;
 
 
 
procedure TForm1.N3Click(Sender: TObject);                  //вертикаль
var nap, Horiz, vert:boolean;
begin
  Form1.Canvas.pen.Color:=Form1.Color;
   //telo
  Form1.Canvas.Brush.Color:=Form1.Color;
  Form1.Canvas.Ellipse(x-100,y-125,x,y);
    //golova
  Form1.Canvas.Brush.Color:=Form1.Color;
  Form1.Canvas.Ellipse(x-80,y-160,x-20,y-100);
     //lapki
  Form1.Canvas.Brush.Color:=Form1.Color;
  Form1.Canvas.Ellipse(x-40,y-5,x-15,y+5);
  Form1.Canvas.Ellipse(x-60,y-5,x-85,y+5);
      //glazki
  Form1.Canvas.Brush.Color:=Form1.Color;
  Form1.Canvas.Ellipse(x-55,y-125,x-65,y-145);
 
  Form1.Canvas.Ellipse(x-45,y-125,x-35,y-145);
 
     //ushki
Form1.Canvas.MoveTo(x-85,y-165);
Form1.Canvas.LineTo(x-75,y-145);
Form1.Canvas.MoveTo(x-85,y-165);
Form1.Canvas.LineTo(x-65,y-155);
Form1.Canvas.MoveTo(x-15,y-165);
Form1.Canvas.LineTo(x-25,y-145);
Form1.Canvas.MoveTo(x-15,y-165);
Form1.Canvas.LineTo(x-35,y-155);
 
 
    //nosik
  Form1.Canvas.Brush.Color:=Form1.Color;
  Form1.Canvas.Ellipse(x-55,y-120,x-45,y-114);
  Form1.Canvas.MoveTo(x-50,y-114);
  Form1.Canvas.LineTo(x-50,y-110);
  Form1.Canvas.MoveTo(x-55,y-110);
  Form1.Canvas.LineTo(x-45,y-110);
 
    //ruchki  //l
  Form1.Canvas.MoveTo(x-65,y-65);
  Form1.Canvas.LineTo(x-65,y-55);
  Form1.Canvas.LineTo(x-67,y-48);
  Form1.Canvas.LineTo(x-70,y-50);
 
  //  Form1.Canvas.LineTo(x-75,y-60);
 
     //ruchki  //r
  Form1.Canvas.MoveTo(x-35,y-65);
  Form1.Canvas.LineTo(x-35,y-55);
  Form1.Canvas.LineTo(x-33,y-48);
  Form1.Canvas.LineTo(x-30,y-50);
   // Form1.Canvas.LineTo(y-25,y-60);
 
     //hvostik
  Form1.Canvas.Brush.Color:=Form1.Color;
  Form1.Canvas.MoveTo(x-25,y-5);
  Form1.Canvas.LineTo(x+10,y-15);
  Form1.Canvas.LineTo(x+25,y-35);
  Form1.Canvas.LineTo(x+50,y-120);
        
  Form1.Canvas.Arc(x+50,y-130,x+30,y-110,x+50,y-120,x+30,y-120);
  Form1.Canvas.MoveTo(x+30,y-120);
  Form1.Canvas.LineTo(x+5,y-35);
  Form1.Canvas.LineTo(x-20,y-15);
    //zrachki
  Form1.Canvas.brush.Color:=Form1.Color;
  Form1.Canvas.Ellipse(x-58,y-137,x-62,y-133);
 
  Form1.Canvas.Ellipse(x-42,y-137,x-38,y-133);
 
 if Horiz then
     Begin
      if  not Nap then
      y:=y+dy
     else
      y:=y-dy;
      if y>=ClientWidth then Nap:=True;                 //ширина
      if y<=0 then Nap:=False;
     end
  else
     Begin
      if  not Nap then
     y:=y+dx
     else
      y:=y-dx;
       if y>=ClientHeight then Nap:=True;
       if y<=0 then Nap:=False;
     end;
 
 
  Form1.Canvas.pen.Color:=clBlack;
   //telo
  Form1.Canvas.Brush.Color:=clGray;
  Form1.Canvas.Ellipse(x-100,y-125,x,y);
    //golova
  Form1.Canvas.Brush.Color:=clWhite;
  Form1.Canvas.Ellipse(x-80,y-160,x-20,y-100);
     //lapki
  Form1.Canvas.Brush.Color:=clBlack;
  Form1.Canvas.Ellipse(x-40,y-5,x-15,y+5);
  Form1.Canvas.Ellipse(x-60,y-5,x-85,y+5);
      //glazki
  Form1.Canvas.Brush.Color:=clGreen;
  Form1.Canvas.Ellipse(x-55,y-125,x-65,y-145);
 
  Form1.Canvas.Ellipse(x-45,y-125,x-35,y-145);
 
     //ushki
Form1.Canvas.MoveTo(x-85,y-165);
Form1.Canvas.LineTo(x-75,y-145);
Form1.Canvas.MoveTo(x-85,y-165);
Form1.Canvas.LineTo(x-65,y-155);
Form1.Canvas.MoveTo(x-15,y-165);
Form1.Canvas.LineTo(x-25,y-145);
Form1.Canvas.MoveTo(x-15,y-165);
Form1.Canvas.LineTo(x-35,y-155);
 
 
    //nosik
  Form1.Canvas.Brush.Color:=clWhite;
  Form1.Canvas.Ellipse(x-55,y-120,x-45,y-114);
  Form1.Canvas.MoveTo(x-50,y-114);
  Form1.Canvas.LineTo(x-50,y-110);
  Form1.Canvas.MoveTo(x-55,y-110);
  Form1.Canvas.LineTo(x-45,y-110);
 
    //ruchki  //l
  Form1.Canvas.MoveTo(x-65,y-65);
  Form1.Canvas.LineTo(x-65,y-55);
  Form1.Canvas.LineTo(x-67,y-48);
  Form1.Canvas.LineTo(x-70,y-50);
 
  //  Form1.Canvas.LineTo(x-75,y-60);
 
     //ruchki  //r
  Form1.Canvas.MoveTo(x-35,y-65);
  Form1.Canvas.LineTo(x-35,y-55);
  Form1.Canvas.LineTo(x-33,y-48);
  Form1.Canvas.LineTo(x-30,y-50);
 //   Form1.Canvas.LineTo(y-25,y-60);
 
     //hvostik
  Form1.Canvas.Brush.Color:=clYellow;
  Form1.Canvas.MoveTo(x-25,y-5);
  Form1.Canvas.LineTo(x+10,y-15);
  Form1.Canvas.LineTo(x+25,y-35);
  Form1.Canvas.LineTo(x+50,y-120);
 
  Form1.Canvas.Arc(x+50,y-130,x+30,y-110,x+50,y-120,x+30,y-120);
  Form1.Canvas.MoveTo(x+30,y-120);
  Form1.Canvas.LineTo(x+5,y-35);
  Form1.Canvas.LineTo(x-20,y-15);
    //zrachki
  Form1.Canvas.brush.Color:=clBlack;
  Form1.Canvas.Ellipse(x-58,y-137,x-62,y-133);
 
  Form1.Canvas.Ellipse(x-42,y-137,x-38,y-133);
  Timer1.Enabled:=true;
end;
 
procedure TForm1.Timer2Timer(Sender: TObject);
 
begin
 { N3Click(Sender); }
 
end;
 
 
 
 
end.
Надежда.. вне форума Ответить с цитированием
Старый 29.12.2008, 19:28   #4
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Вам нужно использовать константы, причем делать это надо было с самого начала, а теперь придется все цифры в коде заменять на константы. Принцип такой, все параметры кота должны описываться не цифрами, а константой умноженной на коэффициент (масштаб), например если хвост у кота длиной 100 пикселей, то теперь он будет:
Код:
const
  xvost = 100;
var
  masshtab: real;
...
...Round(xvost * masshtab)...
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ребят помогите мне написать программу Lena1990 Помощь студентам 1 22.11.2008 19:36
Как с помощью Microsoft Excel написать программу, позволяющую перемещать предмет на плоскости? Vova4kA Microsoft Office Excel 10 28.05.2008 14:18
операции увеличения в с++ JOFRIF Помощь студентам 8 26.04.2008 20:25
как написать программу в Graphе,чтобы он рисовал спираль архимеда Pafnutiya Паскаль, Turbo Pascal, PascalABC.NET 1 07.10.2007 20:40
Как написать программу для отправки почты GragDen Работа с сетью в Delphi 5 14.09.2007 14:12