Hallo,
ich steh grad auf dem Schlauch.
Ich lade in eine Bitmap-Variable ein Bitmap und möchte dies skaliert in einen BitBtn laden.
Ich hab das Ganze mal in ein Test-Projekt ausgelagert.
Das Ganze versuch ich mit StrechDraw.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
bmp, bmp2: TBitmap;
i: Integer;
i_max: Integer;
i_min: Integer;
begin
bmp := TBitmap.Create;
bmp2 := TBitmap.Create;
try
bmp.LoadFromFile('E:\MaskLight\Programm\Masken\Achsen_MKS.bmp');
i_max := Max(bmp.Height, BitBtn1.Height);
i_min := Min(bmp.Height, BitBtn1.Height);
i := i_max div i_min;
BitBtn1.Glyph.Canvas.StretchDraw(Rect(0, 0, BitBtn1.Height, (BitBtn1.Width div i)), bmp2);
BitBtn1.Glyph.Assign(bmp2);
finally
FreeAndNil(bmp);
FreeAndNil(bmp2);
end;
end;
Nur mit der oberen Ausführung erhalte ich gar kein Bild im BitBtn.
Ersetz ich bmp2 durch bmp, dann erhalte ich zwar ein Bild im BitBtn, aber in unveränderter Größe.
Delphi-Quellcode:
BitBtn1.Glyph.Canvas.StretchDraw(Rect(0, 0, BitBtn1.Height, (BitBtn1.Width div i)), bmp);
BitBtn1.Glyph.Assign(bmp);
Die Berechnung von i dient nur der Skalierung bei gleichbleibendem Größenverhältnis.
Was mach ich falsch? (Nein - nicht ich, Delphi
)