Announcement

Collapse
No announcement yet.

Returnwert freigeben

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Returnwert freigeben

    Hi Leute,<br><br>
    In dieser Function gebe ich ein TBitmap zurück. wenn ich nach dem return ( PaintJpgToTBitmapCanves := aBitMap aBitMap.Free aufrufe gebe ich ein leeres BitMap zurück. Wenn ich es nicht mache klappt es. Aber wie gebe ich das BitMap denn frei, damit sich die Anwendung nicht unnötig aufbläht? Da ich diese Funktion mehrere hundert mal im Programm aufrufe.<br><br>
    Gruß Frank

    Function PaintJpgToTBitmapCanves(Path: string; hoehe : integer; breite : integer):TBitmap;<br>
    var<br>
    aJpg : TJPEGImage;<br>
    aBitMap : TBitMap;<br>
    MaxW : integer;<br>
    MaxH : integer;<br>
    begin<br>
    <br>
    if not FileExists(Path) then
    Path := EinstPath + 'error.jpg';<br>
    <br>
    aJpg:=TJPEGImage.Create;<br>
    aJpg.PixelFormat := jf24Bit;<br>
    aJpg.LoadFromFile(Path);<br>
    <br>
    aBitMap := TBitMap.Create;<br>
    aBitMap.PixelFormat := pf24bit;<br>
    aBitMap.HandleType := bmDIB;<br>
    aBitMap.Height := hoehe;<br>
    aBitMap.Width := breite;<br>
    <br>
    MaxW := aBitMap.Width;<br>
    MaxH := aBitMap.Height;<br>
    <br>
    MaxW := round(aBitMap.Height * aJpg.Width / aJpg.Height);<br>

    if aBitMap.Width < MaxW then<br>
    begin<br>
    MaxW := aBitMap.Width;<br>
    MaxH := round(aBitMap.Width * aJpg.Height / aJpg.Width);<br>
    end;<br>
    <br>

    aBitMap.Canvas.StretchDraw(Rect(0, 0, MaxW, MaxH), aJpg);<br>

    aJpg.free;<br>

    PaintJpgToTBitmapCanves := aBitMap;<br>
    end;<br><br>

  • #2
    Problem gelößt ;-)<br><br>
    ich benutze jetzt nicht mehr aBitMap, sondern Arbeite direkt mit PaintJpgToBitmapCanves. Beim beenden der Funktion wird der Speicher freigegeben. Klappt ganz gut.
    <br><BR>
    Gruß Fran

    Comment

    Working...
    X