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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.05.2015, 11:18   #1
Tony Hudson
Пользователь
 
Регистрация: 05.03.2015
Сообщений: 36
По умолчанию Delphi. Графика

Всем привет. Дана программа:Изобразить на экране полет стрекозы.
Код:
procedure Strekoza(x,y: integer);
type Tpol= array[1..3]of TPoint;
const dx = 5;
var pol,pol2,pol3,pol4:Tpol; i: integer;
begin
with Form1.Canvas do begin
//?????? ??????
Pen.Color:=clBlack;
arc(x+5+dx,200,x+75+dx,270,x+75+dx,208,x+5+dx,240);
moveto(x+5+dx,240); lineto(x+37+dx,288);
arc(x-40+dx,250,x+dx,290,x-10+dx,260,x-30+dx,280);
moveto(x-8+dx,255); lineto(x+7+dx,270); moveto(x-37+dx,281);
lineto(x-25+dx,290);
Brush.Color:=clWhite;
arc(x+35+dx,270,x+65+dx,300,x+35+dx,285,x+65+dx,285);
arc(x+15+dx,210,x+85+dx,280,x+85+dx,245,x+15+dx,250);
moveto(x+15+dx,245);lineto(x+35+dx,285);
moveto(x+85+dx,245);lineto(x+65+dx,285);
floodfill(x+45+dx,245,clblack,fsborder);
arc(x+5+dx,285,x+30+dx,310,x+10+dx,305,x+25+dx,290);
arc(x-30+dx,260,x+10+dx,300,x+dx,270,x-20+dx,290);
moveto(x+8+dx,305);lineto(x-26+dx,294);
moveto(x+27+dx,289);lineto(x-4+dx,260);
floodfill(x+17+dx,297,clblack,fsborder);
Brush.Color:=clBlue;
floodfill(x+9+dx,228,clblack,fsborder);
floodfill(x-28+dx,270,clblack,fsborder);
//?????? ????
Brush.Color:=clMaroon;
pol3[1].x:=x+30+dx;
pol3[1].y:=330;
pol3[2].x:=x+40+dx;
pol3[2].y:= 340;
pol3[3].x:=x+20+dx;
pol3[3].y:=335;
polygon(pol3);
moveto(x+63+dx,325); lineto(x+45+dx,320);
pol4[1].x:=x+63+dx;
pol4[1].y:=325;
pol4[2].x:=x+73+dx;
pol4[2].y:= 335;
pol4[3].x:=x+53+dx;
pol4[3].y:=330;
polygon(pol4);
//?????? ???? ????????
Brush.Color:=clOlive;
arc(x-90+dx,325,x-50+dx,355,x-70+dx,325,x-70+dx,355);
moveto(x-70+dx,325); lineto(x+dx,310);
moveto(x-75+dx,355); lineto(x+dx,330);
arc(x-10+dx,310,x+10+dx,330,x+dx,330,x+dx,310);
floodfill(x-67+dx,338,clblack,fsborder);
arc(x+8+dx,300,x+40+dx,330,x+10+dx,305,x+31+dx,290);
arc(x+30+dx,290,x+70+dx,325,x+40+dx,295,x+60+dx,295);
ellipse(x+28+dx,302,x+39+dx,325);
ellipse(x+43+dx,302,x+54+dx,325);
floodfill(x+55+dx,305,clblack,fsborder);
floodfill(x+20+dx,320,clblack,fsborder);
ellipse(x+65+dx,270,X+110+dx,315);
//?????? ?????
Brush.Color:=clWhite;
ellipse(x+80+dx,280,x+95+dx,300);
ellipse(x+102+dx,280,x+110+dx,300);
Brush.Color:=clBlack;
ellipse(x+82+dx,287,x+92+dx,295);
ellipse(x+102+dx,287,x+110+dx,295);
Brush.Color:=clMaroon;
ellipse(x+92+dx,303,x+103+dx,308);
moveto(x+80+dx,275); lineto(x+75+dx,235); moveto(x+100+dx,275);
lineto(x+105+dx,235); ellipse(x+70+dx,230,x+80+dx,240);
ellipse(x+100+dx,230,x+110+dx,240);
moveto(x+35+dx,325); lineto(x+55+dx,335); lineto(x+35+dx,340);
moveto(x+48+dx,323); lineto(x+78+dx,330); lineto(x+58+dx,340);
pol[1].x:=x+35+dx;
pol[1].y:=340;
pol[2].x:=x+45+dx;
pol[2].y:= 350;
pol[3].x:=x+25+dx;
pol[3].y:=345;
polygon(pol);
pol2[1].x:=x+58+dx;
pol2[1].y:=340;
pol2[2].x:=x+68+dx;
pol2[2].y:= 350;
pol2[3].x:=x+48+dx;
pol2[3].y:=345;
polygon(pol2);
end;
end;
   procedure TForm1.tmr1Timer(Sender: TObject);

begin
  with Form1.Canvas do
begin
Pen.Color:=clAqua;
Brush.Color:=clAqua;
Rectangle(0,150,600, 360);
end;
if x< Form1.ClientWidth then x := x+5
else x :=0;
Strekoza(x,y);


end;
Подскажите, как изобразить парашютиста, летящего вниз?

Последний раз редактировалось Stilet; 15.05.2015 в 11:26.
Tony Hudson вне форума Ответить с цитированием
Старый 15.05.2015, 11:32   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Например так:
Код:
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls;

type

  { TForm1 }

  TForm1 = class(TForm)
    Timer1: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure FormPaint(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;

var  x,y:integer;
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.FormCreate(Sender: TObject);
begin
  x:=width div 2; y:=10;
end;

procedure TForm1.FormPaint(Sender: TObject);
var rad:integer;
begin
  rad:=Width div 10;
  with Canvas do begin
    Pie(x-rad,y-rad,x+rad,y+rad,x+rad,y,x-rad,y);
    MoveTo(x-rad,y); LineTo(x,y+rad);
    MoveTo(x+rad,y); LineTo(x,y+rad);
    MoveTo(x,y); LineTo(x,y+rad);

  end;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  inc(y);
  inc(x,10-random(20));
  Repaint;
  if y>Width then TTimer(Sender).Enabled:=false;
end;

end.
Внимание! Не копипастить!
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.05.2015, 11:56   #3
Tony Hudson
Пользователь
 
Регистрация: 05.03.2015
Сообщений: 36
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Например так:
Код:
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls;

type

  { TForm1 }

  TForm1 = class(TForm)
    Timer1: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure FormPaint(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;

var  x,y:integer;
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.FormCreate(Sender: TObject);
begin
  x:=width div 2; y:=10;
end;

procedure TForm1.FormPaint(Sender: TObject);
var rad:integer;
begin
  rad:=Width div 10;
  with Canvas do begin
    Pie(x-rad,y-rad,x+rad,y+rad,x+rad,y,x-rad,y);
    MoveTo(x-rad,y); LineTo(x,y+rad);
    MoveTo(x+rad,y); LineTo(x,y+rad);
    MoveTo(x,y); LineTo(x,y+rad);

  end;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  inc(y);
  inc(x,10-random(20));
  Repaint;
  if y>Width then TTimer(Sender).Enabled:=false;
end;

end.
Внимание! Не копипастить!
А как еще человека к парашюту прицепить?)
Tony Hudson вне форума Ответить с цитированием
Старый 15.05.2015, 11:58   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну дык методами свойства Canvas нарисовать. Палка-палка. Огуречик.
Эт ты уже сам сделай.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.05.2015, 12:01   #5
Tony Hudson
Пользователь
 
Регистрация: 05.03.2015
Сообщений: 36
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Ну дык методами свойства Canvas нарисовать. Палка-палка. Огуречик.
Эт ты уже сам сделай.
Спасибо большое)
Tony Hudson вне форума Ответить с цитированием
Старый 15.05.2015, 12:09   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Пожалуйста )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi,графика Карина 1578 Помощь студентам 3 29.10.2012 23:27
графика в delphi xamelion Общие вопросы Delphi 1 17.10.2010 07:17
Delphi и 3D графика chircov090993 Помощь студентам 7 31.07.2010 00:04
Графика в Delphi novi4ok_Delphi Помощь студентам 3 16.03.2010 19:23