Фоновый рисунок формы

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Фоновый рисунок формы

Сообщение nalex » 13.03.2009 20:56:14

Как наложить на форму фоновый рисунок?
nalex
незнакомец
 
Сообщения: 7
Зарегистрирован: 23.06.2007 19:31:11
Откуда: Новосибирск

Re: Фоновый рисунок формы

Сообщение Logo » 13.03.2009 21:26:23

На событие OnPaint
Код: Выделить всё
procedure TForm1.FormPaint(Sender: TObject);
begin
     Canvas.Draw(0,0, Image1.Picture.Graphic);
end;
Logo
постоялец
 
Сообщения: 464
Зарегистрирован: 20.08.2008 01:00:47

Re: Фоновый рисунок формы

Сообщение Vadim » 14.03.2009 06:32:35

nalex
При создании формы:
Код: Выделить всё
procedure TForm1.Form1Create(Sender: TObject);
Var
  gr: TGraphic;
Begin
  gr:=TGraphic.Create;
  gr.LoadFromFile('Название_файла');
  form1.Canvas.Draw(0,0, gr);
  gr.Free;
End;
Последний раз редактировалось Vadim 14.03.2009 15:50:05, всего редактировалось 1 раз.
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Фоновый рисунок формы

Сообщение wavebvg » 14.03.2009 09:19:16

А мона ещё и растянуть...
wavebvg
постоялец
 
Сообщения: 354
Зарегистрирован: 28.02.2008 04:57:35

Re: Фоновый рисунок формы

Сообщение Andreich » 14.03.2009 09:25:30

to Vadim
У меня это вариан почему-то не захотел работать... ругается 'SIGSEGV' на строчку gr.Create.

И еще, предложенные варианты насколько я понимаю "наклеивают" рисунок на форму как есть, если изображение меньше, то на форме останутся непрокрашенные места. Можно поступить немного по другому, для случая когда необходимо затекстурировать форму (например под камень или метал).

Код: Выделить всё
procedure TForm1.FormPaint(Sender: TObject);
var bitmap: TBitmap;
begin
  bitmap:=TBitmap.Create;
  bitmap.LoadFromFile('image.bmp');
  Form1.Canvas.Brush.Bitmap:=bitmap;
  Form1.Canvas.Rectangle(0,0,Width,Height);
  bitmap.Free;
end;   
Andreich
постоялец
 
Сообщения: 268
Зарегистрирован: 17.04.2008 12:33:43

Re: Фоновый рисунок формы

Сообщение Vadim » 14.03.2009 15:49:25

Andreich писал(а):У меня это вариан почему-то не захотел работать...

Ой, я немного неправильно написал. :) Нужно так:
Код: Выделить всё
gr:=TGraphic.Create;
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Фоновый рисунок формы

Сообщение Logo » 16.03.2009 16:27:53

Vadim, а если сделать немножко ресайз формы, - картинка не пропадает?
Logo
постоялец
 
Сообщения: 464
Зарегистрирован: 20.08.2008 01:00:47

Re: Фоновый рисунок формы

Сообщение Vadim » 17.03.2009 05:58:58

Logo
Пропадёт. :) Потому что всего один раз рисуется. Если форма предполагает изменение размеров, тогда в OnPaint надо засовывать Draw(). Правда это отчётливо замедляет процесс перерисовки формы при ресайзе. Даже на глаз становится видно, как сначала отрисовывается форма, а потом, с некоторой задержкой, сверху накладывается рисунок. :) Я, поэтому, фоновые рисунки не применяю. Их можно, в принципе, накладывать на форму с фиксированными размерами, тогда этот "дефект" не заметен. :)
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Фоновый рисунок формы

Сообщение Slavikk » 17.03.2009 12:28:52

храните рисунок в памяти и перерисовывайте при каждом OnPaint:
Form1.Canvas.Brush.Bitmap:=bitmap;
Form1.Canvas.Rectangle(0,0,Width,Height);
Аватара пользователя
Slavikk
постоялец
 
Сообщения: 208
Зарегистрирован: 15.01.2007 22:34:52
Откуда: Из лесов...


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 43

Рейтинг@Mail.ru