Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Media";
Текущий архив: 2003.11.17;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "Media";
Текущий архив: 2003.11.17;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.008 c
14-56919
aimsyslv
2003-10-22 18:33
2003.11.17
Фильмы


14-56843
VID
2003-10-28 13:00
2003.11.17
Админинг Windows 2000 (лок. машина)


1-56627
Deb
2003-11-05 00:28
2003.11.17
проблема с созданием Popup


3-56490
Duce
2003-10-28 14:12
2003.11.17
Обработать отмену удаления.


1-56725
виктор
2003-11-06 03:13
2003.11.17
глюк DLL под XP





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский