![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 08.06.2010
Сообщений: 14
|
![]()
Помогите пожалуйста перенести прогу с 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. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
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 |