Einzelnen Beitrag anzeigen

Michael II
Online

Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
739 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: PNG in Bitmap-Layer laden

  Alt 16. Apr 2024, 16:30
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.)
Michael Gasser
  Mit Zitat antworten Zitat