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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.04.2012, 12:55   #1
venomdanger
Пользователь
 
Регистрация: 08.06.2010
Сообщений: 14
По умолчанию перенос c Object pascal на C++

Помогите пожалуйста перенести прогу с Delphi на С++


вот код:

unit aplane_;

interface

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


type
TForm1 = class(TForm)
Timer1: TTimer;
Image1: TImage;
procedure FormActivate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;



implementation

{$R *.DFM}
var
Back, bitmap, Buf : TBitMap; // фон, картинка, буфер
BackRct : TRect; // область фона, которая должна быть
// восстановлена из буфера
BufRct: Trect; // область буфера, которая используется для
// восстановления фона

x,y:integer; // текущее положение картинки
W,H: integer; // размеры картинки

procedure TForm1.FormActivate(Sender: TObject);
begin
// создать три объекта - битовых образа
Back := TBitmap.Create; // фон
bitmap := TBitmap.Create; // картинка
Buf := TBitmap.Create; // буфер

// загрузить и вывести фон
Back.LoadFromFile('factory.bmp');
Form1.Image1.canvas.Draw(0,0,Back);

// загрузить картинку, которая будет двигаться
bitmap.LoadFromFile('ymck_cars.bmp' );
// определим "прозрачный" цвет
bitmap.Transparent := True;
bitmap.TransParentColor := bitmap.canvas.pixels[1,1];

// создать буфер для сохранения копии области фона,
// на которую накладывается картинка
W:= bitmap.Width;
H:= bitmap.Height;
Buf.Width:= W;
Buf.Height:=H;
Buf.Palette:=Back.Palette; // Чтобы обеспечить соответствие палитр !!
Buf.Canvas.CopyMode:=cmSrcCopy;
// определим область буфера, которая будет использоваться
// для восстановления фона
BufRct:=Bounds(0,0,W,H);

// начальное положение картинки
x := -W;
y := 81;

// определим сохраняемую область фона
BackRct:=Bounds(x,y,W,H);
// и сохраним ее
Buf.Canvas.CopyRect(BufRct,Back.Can vas,BackRct);
end;

// обработка сигнала таймера
procedure TForm1.Timer1Timer(Sender: TObject);
begin
// восстановлением фона (из буфера) удалим рисунок
Form1.image1.canvas.Draw(x,y,Buf);

x:=x+2;
if x>form1.Image1.Width then x:=-W;

// определим сохраняемую область фона
BackRct:=Bounds(x,y,W,H);
// сохраним ее копию
Buf.Canvas.CopyRect(BufRct,Back.Can vas,BackRct);

// выведем рисунок
Form1.image1.canvas.Draw(x,y,bitmap );
end;

// завершение работы программы
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
// освободим память, выделенную
// для хранения битовых образов
Back.Free;
bitmap.Free;
Buf.Free;
end;

end.
venomdanger вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Object Pascal DENISzzz Помощь студентам 11 16.03.2012 18:53
ООП на с++ и object pascal fear-hell Помощь студентам 0 20.12.2011 14:58
Object Pascal, LabeledEdit Антон Лысенко Помощь студентам 0 12.03.2011 22:30
Перевод кода из Pascal в Object Pascal zemskov77 Общие вопросы Delphi 1 03.01.2009 09:37