![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Подскажите плиз.... как загружать рисунок на форму? [D6, XP]
vegarulez © (2006-03-30 08:12:00)У меня почему-то не получается сделать фоном формы рисунок...
как это везде описывается в инете, с помощью этого кода:
_______
unit bmpformu;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls,
Forms, Dialogs, StdCtrls;
type
TBmpForm = class(TForm)
Button1: TButton;
procedure FormDestroy(Sender: TObject);
procedure FormPaint(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
Bitmap: TBitmap;
procedure ScrambleBitmap;
procedure WMEraseBkgnd(var m: TWMEraseBkgnd); message WM_ERASEBKGND;
end;
var
BmpForm: TBmpForm;
implementation
{$R *.DFM}
procedure TBmpForm.FormCreate(Sender: TObject);
begin
Bitmap := TBitmap.Create;
Bitmap.LoadFromFile('bor6.bmp');
end;
procedure TBmpForm.FormDestroy(Sender: TObject);
begin
Bitmap.Free;
end;
// since we're going to be painting the whole form, handling this
// message will suppress the uneccessary repainting of the background
// which can result in flicker.
procedure TBmpform.WMEraseBkgnd(var m : TWMEraseBkgnd);
begin
m.Result := LRESULT(False);
end;
procedure TBmpForm.FormPaint(Sender: TObject);
var
x, y: Integer;
begin
y := 0;
while y < Height do
begin
x := 0;
while x < Width do
begin
Canvas.Draw(x, y, Bitmap);
x := x + Bitmap.Width;
end;
y := y + Bitmap.Height;
end;
end;
procedure TBmpForm.Button1Click(Sender: TObject);
begin
ScrambleBitmap; Invalidate;
end;
// scrambling the bitmap is easy when it's has 256 colors:
// we just need to change each of the color in the palette
// to some other value.
procedure TBmpForm.ScrambleBitmap;
var
pal: PLogPalette;
hpal: HPALETTE;
i: Integer;
begin
pal := nil;
try
GetMem(pal, sizeof(TLogPalette) + sizeof(TPaletteEntry) * 255);
pal.palVersion := $300;
pal.palNumEntries := 256;
for i := 0 to 255 do
begin
pal.palPalEntry[i].peRed := Random(255);
pal.palPalEntry[i].peGreen := Random(255);
pal.palPalEntry[i].peBlue := Random(255);
end;
hpal := CreatePalette(pal^);
if hpal <> 0 then
Bitmap.Palette := hpal;
finally
FreeMem(pal);
end;
end;
end.
________
У меня получается просто прозрачная форма через которую всё видно и посередине не прозрачная кнопка...
подскажите в чём тут трабла?
icq:250921382
vegarulez (2006-03-30 21:39:00) [1]2 Nsk3D типа атжог?
С формой я уже разобрался, рисунок помешается, как уже было написано выше.... читай лучше...
Теперь вопрос в другом зачем нужна кнопка?
У меня при нажатии на неё ничего не происходит...
в описании написано Этот модуль заполняет фон формы рисунком bor6.bmp и меняет его палитру при нажатии кнопки
Что значит меняет палитру? Перегоняет в 256 цветов рисунок боьлшей битовости или что?
Почему тогда у меня ничего не получается при нажатии на батон? В чём проблема?...
Nsk3D (2006-03-30 14:08:00) [2]Амба!Точно прозрачная форма а кнопка не прозрачная?
vegarulez (2006-03-30 13:44:00) [3]up
vegarulez (2006-03-30 09:49:00) [4]Ага. Спасибо. Получилось.
Но вот тут возникает тогда другой вопрос, в описании к этому модулю написано:
Этот модуль заполняет фон формы рисунком bor6.bmp (256 цветов) и меняет его палитру при нажатии кнопки
Что это значит меняет его палитр при нажатии кнопки???
При нажатии у меня ничего не происходит... (
AbrosimovA (2006-03-30 09:13:00) [5]У твоей формы в Events глянь, там должны OnCreate= FormCreate, OnDestroy= FormDestroyи OnPaint= FormPaint.