IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> Панорама, Как сделать панораму?
сообщение
Сообщение #1


Гость






Люди, подскажите пожалуйста. Мне необходимо сделать панораму. Длинная кортинка, которая едет по форме. Но когда я двигаю компонент Image по форме image.left:=image.left+1 картинка как будто мерцает и на какоето время пропадает. Мне сказали что так сделать не получится. А как же тогда мне сделать панораму? Заранее спасибо! Alx
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Бывалый
***

Группа: Пользователи
Сообщений: 180
Пол: Мужской

Репутация: -  2  +


DX - это видимо DirectX, компонент, ага... только не дельфы, а винды...

но и без него можно сделать кое-что:

var Bmp: TBitmap;
...
Form1.Canvas.CopyRect(Form1.ClientRect,
 Bmp.Canvas, Rect(offset, 0, Form1.ClientWidth+offset, Form1.ClientHeight));
...
// ClientRect=(0,0,ClientWidth,ClientHeight) - внутреннее пространство формы

блок из Bitmapа размером с форму Form1, только с горизонтальным смещением offset копируется прямо на форму Form1

и не забудь добавить строчку DoubleBuffered, чтоб не моргало при перерисовке...


вот, только что сделал для проверки:
unit Unit1;
interface

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

type
 TForm1 = class(TForm)
   Timer1: TTimer;
   procedure FormCreate(Sender: TObject);
   procedure FormPaint(Sender: TObject);
   procedure FormClose(Sender: TObject; var Action: TCloseAction);
   procedure Timer1Timer(Sender: TObject);
 end;

var
 Form1: TForm1;
 Bitmap: TBitmap;
 x: integer;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
 doublebuffered:=true;
 Bitmap := TBitmap.Create;
 Bitmap.LoadFromFile('EARTH2.bmp');
end;

procedure TForm1.FormPaint(Sender: TObject);
begin
 Canvas.CopyRect(clientrect,Bitmap.Canvas,rect(x,0,x+clientwidth,clientheight));
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 Bitmap.Free;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
 inc(x);
 if x+clientwidth>=1024 then x:=0;
 repaint;
end;
end.

на форме только Timer1
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Alx   Панорама   16.08.2004 17:33
BlackShadow   Проще всего было бы через DX... С простым TImage э…   16.08.2004 19:05
Guest   :p2: А тогда, соответственно, вопрос. В двух слов…   16.08.2004 19:20
BlackShadow   В общем случае - нет :) DX - Это уж совсем кратко …   16.08.2004 20:03
P@sh@   DX - это видимо DirectX, компонент, ага... только …   16.08.2004 20:18
Alx   Вау какой код. ОГРОМНЫЙ РЕСПЕКТ и человеческое СПА…   16.08.2004 20:38
BlackShadow   Да, вот про DoubleBuffered я и не подумал :( А под…   17.08.2004 15:23
Guest   Так этот код не будет работать? :( Я даже не зна…   17.08.2004 16:40
BlackShadow   DoubleBuffered, это когда форма поддерживает что-т…   17.08.2004 18:08
Alx   Дааа. Нашел я какие-то тексты по изучению DirectX …   17.08.2004 19:28
BlackShadow   Я тут код написал??? Тот код, что присла P@sh@ вп…   17.08.2004 20:48
P@sh@   DoubleBuffered просто включает режим, когда Canvas…   18.08.2004 10:39
Alx   Люди, а вот посмотрите. В том коде, который написа…   18.08.2004 15:48
BlackShadow   Это не из-зп версии Delphi. Я бы посоветывал тебе …   18.08.2004 16:31
Alx   А вот если я в коде убираю repaint, то тогда мирца…   18.08.2004 16:44
Бродяжник   procedure TForm1.Timer1Timer(Sender: TObject); beg…   18.08.2004 17:18
Alx   Но так как написал P@sh@ у меня не как не выходит.…   18.08.2004 17:27
BlackShadow   А вот это не надо :) Свёрнутое окно не рисует на …   18.08.2004 17:46
Guest   Ну а почему у меня процедура не вызывается?: proc…   18.08.2004 17:55
Бродяжник   BlackShadow "Свернутое окно не рисует на сво…   18.08.2004 18:01
BlackShadow   Бродяжник, надеюсь к критике ты относишься нормаль…   18.08.2004 18:26
Alx   Спасибо! Вечером, как только доберусь до Делфи…   18.08.2004 18:42
Бродяжник   Нормально отношусь! Ламер я... зато со стажем…   18.08.2004 20:24
BlackShadow   В зависимости от версии переменные могут быть иниц…   18.08.2004 21:01
Бродяжник   Version 1.1.   19.08.2004 12:37
P@sh@   Alx Ну а почему у меня процедура не вызывается? Эт…   19.08.2004 13:14
Alx   Ой! Всё супер! Не мерцает! СПАСИБОЧКИ…   19.08.2004 15:43
BlackShadow   А что jpg нельзя загрузить так же как и bmp? Тогда…   19.08.2004 17:31
P@sh@   Alx насчет bmp и jpeg - я использовал класс TBitm…   25.08.2004 14:20


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 5.05.2024 23:48
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name