Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Stringgrid-Drawcell und Graphics32 (https://www.delphipraxis.net/88458-stringgrid-drawcell-und-graphics32.html)

ghammerlindl 15. Mär 2007 17:04


Stringgrid-Drawcell und Graphics32
 
Hallo,

ich benutze eine Stringgrid in der in jeder Zelle ein Bild hineingeladen wird. In der Funktion OnDrawCell wird das benötigte Bitmap ermittelt und in der aktuellen Zelle rausgezeichnet. Das Stringgrid kann ca. 150 Spalten und 80 Zeilen enthalten.

Ich habe das ganze zuerst mittels StretchDraw durchgeführt, das Problem ist, dass die verkleinerten Bitmaps nicht schön sind.

Durch stöbern im Forum bin ich dann auf die Graphics32 gestoßen. Hab versucht diese zu implementieren, jedoch muss ich sagen, dass die Bitmaps jetzt zwar wunderschön aussehen, jedoch die Performance total unakzeptabel ist. Es dauert ca. zehn Sekunden bis die komplette Tabelle befüllt ist.

Es wird geschrieben dass Graphics32 extrem schnell sei. Anscheinend nicht in meinem Fall.

Vielen Dank für Eure Hilfe!

Hier der Code:

Delphi-Quellcode:
procedure TForm.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
  // Object aus Zelle auslesen (beinhaltet Informationen zum Ermitteln des Bitmaps)
  Lagerfach := TLagerfach(StringGrid1.Objects[Col,Row]);
  if (Lagerfach = nil) then
     exit;

  // Alte Version

  // Bitmap ermitteln und verkleinert im Grid anzeigen

  // EditorStringGrid.Canvas.StretchDraw(Rect, GetFachstatusBitmap(Lagerfach.seFachstatus, 0));



  // Neue Version

  // Bitmap ermitteln
  source32 := GetFachstatusBitmap32(Lagerfach.seFachstatus, 0);

  // verkleinert ausgeben
  dest32.SetSize(StringGrid1.DefaultColWidth, StringGrid1.DefaultRowHeight);
  source32.StretchFilter := sfLanczos;
  source32.DrawTo(dest32,dest32.BoundsRect, source32.BoundsRect);
  dest32.DrawTo(StringGrid1.Canvas.Handle,Rect.Left,Rect.Top);
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:36 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz