Ich würde im FormResize die Grösse anpassen.
Delphi-Quellcode:
var BL:TBitmapLayer;
origwidth, origheight : integer;
origbitmap : TBitMap32;
...
procedure TForm1.FormCreate(Sender: TObject);
...
begin
origwidth := clientwidth;
origheight := clientheight;
...
// ich verwende noch eine alte Version von Graphics32 ohne direkte PNG Unterstützung:
png := TPNGImage.Create;
png.LoadFromFile( ExtractFilePath(ParamStr(0)) + 'images\next.png' );
origbitmap.Assign(png);
BL.bitmap.assign(origbitmap);
...
procedure TForm1.FormResize(Sender: TObject);
var
Scale: Single;
begin
if (ClientWidth > 0) and (ClientHeight > 0) then
begin
Scale := Min(ClientWidth / origwidth, ClientHeight / origheight );
bl.Bitmap.SetSize(Round(Origbitmap.Width* Scale), Round(Origbitmap.Height* Scale));
bl.Bitmap.Draw(bl.Bitmap.BoundsRect, OrigBitMap.BoundsRect, OrigBitMap);
end;
end;
initialization
origbitmap := TBitMap32.Create;
finalization
origbitmap.Free;
end.
Wenn du mehrere Layers verwendest:
TImage32 -> TLayerCollection
TIMage32 kennt die Eigenschaft Layers. Du kannst Bilder deiner Buttons, Spielkarten, Raumschiffe etc. beim Programmstart laden. Dann hast du via die Layers Zugriff auf die Bitmaps und kannst im FormResize auf einfache Weise alle Bitmaps anpassen. (Wenn du die Layerfunktionalität nicht benötigst: TBitmap32List.)