Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как изменить рисунок фона на форме? [D5, Win95/98]


BillyJeans ©   (2002-09-02 16:44:00) 

Как изменить рисунок фона на форме?


BillyJeans   (2002-09-03 11:42:00) [1]

Всем спасибо, у меня все получилось!


Виктор Щербаков   (2002-09-03 11:11:00) [2]

примерно так
procedure TForm1.WMEraseBkGnd(var Message: TWMEraseBkGnd);
var
DC : HDC;
i, j: Integer;
begin
DC := TWMEraseBkGnd(Message).Dc;
for i := 0 to ClientWidth div FBitmap.Width do
for j := 0 to ClientHeight div FBitmap.Height do
BitBlt(Dc,
i * FBitmap.Width,
j * FBitmap.Height,
Width,
Height,
FBitmap.Canvas.Handle,
0, 0,
SRCCOPY);
Message.Result := 1;
end;


BillyJeans   (2002-09-03 11:00:00) [3]

Получилось! Только вот как сделать, чтобы рисунок не растягивался, а форму заливало этим рисунком (как в windows на раб.столе)?


Виктор Щербаков   (2002-09-03 10:46:00) [4]

Код рабочий, ты наверно забыл событию OnCreate формы назначить обработчик. Отсюда и ошибка :)


BillyJeans   (2002-09-03 10:34:00) [5]

Ошибка следующая:
Project raised exception class EAccessViolation
на строке
StretchBlt(Dc, 0, 0, Width, Height, FBitmap.Canvas.Handle, 0, 0,
FBitmap.Width, FBitmap.Height, SRCCOPY);


ЮЮ   (2002-09-03 09:59:00) [6]

А Игорь Шевченко © (02.09.02 17:38) с потолка срисовал? :-)


Ученик   (2002-09-03 09:58:00) [7]

>BillyJeans © (03.09.02 09:53)
В какой момент, какую ошибку ?


BillyJeans   (2002-09-03 09:53:00) [8]

Всеравно ошибку выдает!
Мне бы пример из жизни...


Игорь Шевченко   (2002-09-02 17:38:00) [9]

Например, вот так:
unit main;

interface

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

type
TForm1 = class(TForm)
Button1: TButton;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
FBitmap : TBitmap;
procedure WMEraseBkGnd (var Message : TWMEraseBkGnd); message WM_ERASEBKGND;
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
FBitmap := TBitmap.Create;
FBitmap.LoadFromFile("cool.bmp");
end;

procedure TForm1.WMEraseBkGnd(var Message: TWMEraseBkGnd);
var
DC : HDC;
begin
DC := TWMEraseBkGnd(Message).Dc;
StretchBlt(Dc,
0,
0,
Width,
Height,
FBitmap.Canvas.Handle,
0, 0,
FBitmap.Width,
FBitmap.Height,

SRCCOPY);
Message.Result := 1;
end;

end.


BillyJeans   (2002-09-02 16:55:00) [10]

что-то не получается :(
подробнее plz


Игорь Шевченко   (2002-09-02 16:49:00) [11]

Обрабатывать сообщение WM_ERASEBKGND и рисовать фон.


Ученик   (2002-09-02 16:49:00) [12]

procedure TForm1.FormShow(Sender: TObject);
begin
Brush.Bitmap := Image1.Picture.Bitmap
end;


Наверх

Титульная страница Поиск, карта сайта Написать письмо