Einzelnen Beitrag anzeigen

Benutzerbild von Helmi
Helmi
Online

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.323 Beiträge
 
Delphi XE2 Professional
 
#1

Problem mit Skalierung eines Bitmap im BitBtn

  Alt 14. Apr 2011, 20:02
Delphi-Version: 7
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 )
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat