![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Мастера, помогите!!! [D4, Win95/98, WinME]
[BAD]Angel © (2002-08-09 13:07:00)Как сделать, чтобы картинка (image) плавно увеличивалась или уменьшалась (без миганий)...
mukha (2002-08-10 15:04:00) [1]В книге для начинающих как демонстрация работы таймера видел примерно такой пример:
На форме Panel,на ней Image с загруженным рисунком, button и Timer. Image размещён на панели чтобы устранить мигания.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, StdCtrls, Buttons, jpeg;
type
TForm1 = class(TForm)
Panel1: TPanel;
Timer1: TTimer;
Image1: TImage;
Button1: TButton;
procedure Timer1Timer(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
small:boolean;
implementation
{$R *.DFM}
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if small=true then
begin
Image1.Height:=Image1.Height-2;
Image1.Width:=Image1.Width-2;
if Image1.Height<=100 then //минимальный размер Image
small:=false;
end;
if small=false then
begin
Image1.Height:=Image1.Height+2;
Image1.Width:=Image1.Width+2;
if Image1.Height>=300 then // максимальный размер Image
small:=true;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Form1.DoubleBuffered:=true;
Timer1.Interval:=1;
Timer1.Enabled:=false;
Image1.Stretch:=true;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Timer1.Enabled:=true;
small:=true;
end;
end.
[BAD]Angel (2002-08-10 12:53:00) [2]Спасибо!
Viktor Kushnir (2002-08-09 18:44:00) [3]Просто так плавно не получится. Нужно подготовить в памяти несколько изображений разного размера, а затем их подряд прорисовать.
Можно создать что-нибудь вроде
Var
i :integer;
ImgArray :Array [0..9] of TBitmap;
...
Begin
For i := 0 to 9 do
Begin
ImgArray[i] := TBitmap.create;
{Здесь рисуешь в ImgArray[i] нужную картинку, с нужным размером}
End;
Затем заполнить его 10 картинками с возрастающеми (или убывающеми, как хочешь) размерами, а затем их поочереди прорисовать.
For i := 0 to 9 do
Begin
Form1.Canvas.Draw(0,0,ImgArray[i])
Sleep(100);
End;
Только не забудь потом память освободить.
[BAD]Angel (2002-08-09 16:30:00) [4]Ну неужели никто не знает? :-(
[BAD]Angel (2002-08-09 13:27:00) [5]Да я еще никак ни делаю... Я не знаю, как это реализовать! Если бы знал, то, наверное, не спрашивал бы!
Skier (2002-08-09 13:23:00) [6]>[BAD]Angel
Покажи код : как тыэто делаешь...
[BAD]Angel (2002-08-09 13:19:00) [7]Ну я же написал... Есть картинка (Image) размера 100х100 допустим, нажимаеш на нее и она плавно увеличивается до 300х300, допустим!!!
Skier (2002-08-09 13:14:00) [8]>[BAD]Angel
Цель какая ?