Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.11.17;
Скачать: CL | DM;

Вниз

как вывести картинку ???   Найти похожие ветки 

 
Andry   (2003-07-19 01:21) [0]

Как вывести несколько картинок в одном месте, так чтобы нижнаяя выводилась не закрывая верхних (что-то вроде слоев). Пробовал несколько TImage, но они мерцают сильно при рисовании на их Canvas.


 
iXuSs   (2003-07-19 19:00) [1]

Достаточно одной канвы, можно того же TImage. Вот пример:

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

type
TformShow = class(TForm)
Image1: TImage;
btnShow: TBitBtn;
procedure FormCreate(Sender: TObject);
procedure btnShowClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

type TPic = record
Bitmap: TBitmap;
x, y: Integer;
end;

var
formShow: TformShow;
Bmps: array [1..3] of TPic;

implementation

{$R *.DFM}

procedure TformShow.FormCreate(Sender: TObject);
var i: Integer;
begin
Randomize;
formShow.DoubleBuffered := True;
For i := 1 to High(Bmps) do
begin
Bmps[i].Bitmap := TBitmap.Create;
Bmps[i].Bitmap.LoadFromFile(IntToStr(i) + ".bmp");
Bmps[i].Bitmap.Transparent := True;
Bmps[i].x := 10 + Random(Image1.Width-20-Bmps[i].Bitmap.Width);
Bmps[i].y := 10 + Random(Image1.Height-20-Bmps[i].Bitmap.Height);
end;
end;

procedure TformShow.btnShowClick(Sender: TObject);
var i: Integer;
begin
For i := 1 to High(Bmps) do
begin
( Bmps[i].x, Bmps[i].y, Bmps[i].Bitmap) Достаточно одной канвы, можно того же TImage. Вот пример:

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

type
TformShow = class(TForm)
Image1: TImage;
btnShow: TBitBtn;
procedure FormCreate(Sender: TObject);
procedure btnShowClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

type TPic = record
Bitmap: TBitmap;
x, y: Integer;
end;

var
formShow: TformShow;
Bmps: array [1..3] of TPic;

implementation

{$R *.DFM}

procedure TformShow.FormCreate(Sender: TObject);
var i: Integer;
begin
Randomize;
formShow.DoubleBuffered := True;
For i := 1 to High(Bmps) do
begin
Bmps[i].Bitmap := TBitmap.Create;
Bmps[i].Bitmap.LoadFromFile(IntToStr(i) + ".bmp");
Bmps[i].Bitmap.Transparent := True;
Bmps[i].x := 10 + Random(Image1.Width-20-Bmps[i].Bitmap.Width);
Bmps[i].y := 10 + Random(Image1.Height-20-Bmps[i].Bitmap.Height);
end;
end;

procedure TformShow.btnShowClick(Sender: TObject);
var i: Integer;
begin
For i := 1 to High(Bmps) do
begin
Image1.Canvas.Draw(Bmps[i].x, Bmps[i].y, Bmps[i].Bitmap);
end;
end;

end.

Это ещё не самый лучший вариант, но довольно простой. При этом, графика загружается из bmp-шек с названием 1.bmp, 2.bmp и т.д., обрати внимание на formShow.DoubleBuffered := True - он уменьшаяет мерцание, ты даже можешь попробовать с теми же TImage, включив это свойство.


 
iXuSs   (2003-07-19 19:00) [2]

Создаёшь битмап с размерами, как у самой большой картинки. На него рисуешь всё изображения в нужном размере.

Или я не понял вопрос?


 
Fenik ©   (2003-07-19 19:01) [3]

Весело пошутил ;)))))


 
Walker ©   (2003-07-19 19:03) [4]

я бы обратил внимание автора вопроса на следующую строку:
Bmps[i].Bitmap.Transparent := True;


 
iXuSs   (2003-07-19 19:31) [5]

> Весело пошутил ;)))))

Гм... тлоько тебе и смешно. Не надо так больше.


 
Fenik ©   (2003-07-19 22:56) [6]

Не будь таким серьёзным...
Ведь как ты а! два сообщения за минуту!! :0))))


 
iXuSs   (2003-07-19 23:46) [7]

Тем не менее, зачем вообще?


 
Fenik ©   (2003-07-20 14:07) [8]

> Не надо так больше.
Я совсем не хотел тебя подставлять.

> Тем не менее, зачем вообще?
Это называется "Зов изнутри". Вдруг, спонтанно захотелось вместо "Fenik" написать "iXuSs". Просто запостил сообщение и обана! Минута в минуту, ровно в 19:00! Ей Богу, специально не придумаешь! Это знак! Или мне, или тебе, или нам обоим. Это совсем не шутка...



Страницы: 1 вся ветка

Текущий архив: 2003.11.17;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.034 c
7-56944
subdigger
2003-08-30 17:56
2003.11.17
cd-emulator


3-56482
wHammer
2003-10-28 14:51
2003.11.17
Проблема с инкрементом


6-56787
StanislavB
2003-09-19 08:31
2003.11.17
Возврат из ActivX в сценарий


9-56426
T{}r(l-l
2003-05-08 00:44
2003.11.17
Как рисовать модельки?


1-56628
CrazyHacKeRs
2003-11-05 15:39
2003.11.17
Только програмное изменение PageControl