AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Stringgrid-Drawcell und Graphics32
Thema durchsuchen
Ansicht
Themen-Optionen

Stringgrid-Drawcell und Graphics32

Ein Thema von ghammerlindl · begonnen am 15. Mär 2007
Antwort Antwort
ghammerlindl

Registriert seit: 15. Mär 2007
2 Beiträge
 
#1

Stringgrid-Drawcell und Graphics32

  Alt 15. Mär 2007, 18:04
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;
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:27 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