![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как изменить рисунок фона на форме? [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;