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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.10.2009, 21:25   #1
BuT@JL
Форумчанин
 
Регистрация: 27.11.2008
Сообщений: 137
По умолчанию Вопрос связанный с выводом графики

Я недавно скачал с этого форума пример по выводу анимации, графику через canvas, там шар по нажатию кнопки на клавиатуре двежется по закрашенному экрану. Так вот вопрос, как мне поставить в этом примере на фон какую нибудь картинку? Если можете исправте в этом примере.
Пример.rar
BuT@JL вне форума Ответить с цитированием
Старый 23.10.2009, 23:46   #2
BuT@JL
Форумчанин
 
Регистрация: 27.11.2008
Сообщений: 137
По умолчанию

Ну кто нибудь поможет. Вот исходный код

Цитата:
unit Unit1;

interface

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

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

var
Form1: TForm1;
bmp,bmp1: tbitmap; // картинка и буфер для копирования нужного кадра в него
buf: tbitmap;
kadrx: integer=0; // кадр по x
kadry: integer=0; // кадр по y
Time: integer;
x,y: integer; // положение картинки

implementation

{$R *.dfm}

function KeyPressed(Key: byte): boolean;
var
keys: TKeyboardState;
begin
result:=false;
GetKeyboardState(keys);
if (keys[key]=128)or(keys[key]=129) then
result:=true;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
buf:=tbitmap.Create;
buf.Width:=200;
buf.Height:=200;
buf.Canvas.Brush.Color:=100;
bmp:=tbitmap.Create;
bmp.LoadFromFile('Земля.bmp');
// при использовании CopyRect изображение екопируется без
// цвета прозрачности поэтому заведем еще один буфер
bmp1:=tbitmap.Create;
bmp1.Width:=80; bmp1.Height:=60;
bmp1.TransparentColor:=clwhite;
bmp1.Transparent:=true;

Time:=GetTickCount; // время в милисекундах от старта опирационной системы
x:=0; y:=20;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
buf.Canvas.FillRect(rect(0,0,200,20 0));
if KeyPressed(39) then // right
begin
x:=x+1;
if GetTickCount-Time>20 then // если уже прошло 20 милисекунд то
begin
kadrx:=kadrx+1; // кадра по x + 1
if kadrx>=7 then // всего кадров 8, но мы начинаем с 0-го поэтому -1
begin
kadrx:=0; // кадры по x вышли за предел кадра по x = 0
kadry:=kadry+1; // кадра по y +1
if kadry>=5 then // кадр по y вышел за предел
kadry:=0; // кадр по y =0
end;
Time:=GetTickCount;
end;
end;
// все с точностью да на оборот
if KeyPressed(37) then // left
begin
x:=x-1;
if GetTickCount-Time>20 then
begin
kadrx:=kadrx-1;
if kadrx<0 then
begin
kadrx:=7;
kadry:=kadry-1;
if kadry<0 then
kadry:=4;
end;
Time:=GetTickCount;
end;
end;
bmp1.Canvas.CopyRect(rect(0,0,80,60 ){rect на приемнике},
bmp.Canvas{копируемая картинка},
rect(kadrx*80,kadry*60,kadrx*80+80, kadry*60+60){rect копируемой картинки});
buf.Canvas.Draw(x,y,bmp1);
form1.Canvas.Draw(0,0,buf);
end;

end.
BuT@JL вне форума Ответить с цитированием
Старый 24.10.2009, 12:54   #3
BuT@JL
Форумчанин
 
Регистрация: 27.11.2008
Сообщений: 137
По умолчанию

Что все программисты умерли? сложно ответить на мой вопрос?
BuT@JL вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помощь с BASS, сигналом и выводом графики Манжосов Денис :) Мультимедиа в Delphi 7 12.01.2011 15:25
Вопрос по извлечению графики buser Общие вопросы C/C++ 0 24.03.2009 20:51
Помощь с выводом в файл FatalX Помощь студентам 1 14.07.2008 19:23
Проблемка с выводом Gladiator Общие вопросы Delphi 2 28.05.2008 19:51