![]() |
[GDI+]Bild wird nicht richtig geladen
Liste der Anhänge anzeigen (Anzahl: 1)
HI,
ich versuche mit Hilfe von GDI+ verschiedene Bilder zu laden. Leider klappt das nicht bei allen. So leifert Windows XP 4 Beispielbilder mit, von denen nur 3 richtig dargestellt werden. Unterbau der Lade-Funktion ist folgendes:
Delphi-Quellcode:
Wie hier bei Schritt 4 angegeben, funktioniert das Zeichnen des GDI+-Bildes in ein TBitmap nicht sonderlich gut. Zur weiteren Verwendung des Bildes brauche ich aber das Bild möglichst in einem TGraphic-kompatiblen Objekt. TBitmap eignet sich dazu am Besten (wegen .Canvas).
function LoadImage(FileName: TFileName; Image: TBitmap): boolean;
var graphics: TGPGraphics; Source: TGPImage; begin // First: Load the Image from file Source := TGPImage.Create(FileName); Result := (Source.GetLastStatus = Ok); if Result then begin // Second: Apply changes to the destination Image.Width := Source.GetWidth; Image.Height := Source.GetHeight; // Third: Get Device Context to draw graphics := TGPGraphics.Create(Image.Canvas.Handle); // 4.: Draw! ( There must be some ERROR, cause on some Pictures this doesn't work in the right way! ) graphics.DrawImage(Source, 0, 0); // 5.: Free objects graphics.Free; end; Source.Free; end; Wie das aussieht, wenn ein Bild nicht gut geladen wurde, sieht man im Anhang. Die Windows-Bild-und Faxanzeige schafft es aber trotzdem, das Bild richtig darzustellen. Außerdem tritt der Fehler nicht bei allen Bildern eines bestimmten Typs auf und hängt nicht mit dem Dateinamen zusammen. Bernhard |
AW: [GDI+]Bild wird nicht richtig geladen
Hi Bernhard,
ich bin wahrscheinlich mit Blindheit geschlagen, was passt den nicht bei dem Beispielbild? Und, ich bin eine Fan von GDI+, aber warum Du es hier verwendest erschließt sich mir noch nicht.... |
AW: [GDI+]Bild wird nicht richtig geladen
Ok, im Hintergrund ist ein überarbeiteter TOpenPictureDialog, welcher seine Vorschau mit Hilfe von GDI+ erledigt. Das dazugehörige Programm ist ein Tool, welches aus mehreren Bildern ein mehrseitiges TIFF-Bild machen soll. Diese Tätigkeit funktioniert auch so weit.
Nur hapert es an der Vorschau. Das Bild wird geladen, aber nicht "vollflächig". Das TBitmap bekommt jetzt hier beispielhaft die Werte 800x600 für Breite und Höhe zugewiesen. Jetzt beauftrage ich GDI+, das Bild vollflächig zu zeichnen. Ergebnis ist, dass das Bild irgendwo oben links in der Ecke klebt (0, 0) und das TBitmap nicht ausfüllt. Dass das Bild oben links in der Ecke klebt, ist gewollt, weil als Startkoordinaten ja auch (0, 0) angegeben wird. Nur ist das Bild nicht in Originalgröße auf das TBitmap gezeichnet worden. Dieser Effekt tritt nicht bei allen Bildern auf, sondern nur bei bestimmten. Das ist das große Problem dabei. Es funktioniert zwar, aber nicht bei 100% der Möglichkeiten. Eines der Beispiele, wo das eben nicht der Fall ist, ist das Bild "Blaue Berge.jpg" von den Windows XP-eigenen Beispielbildern. Die anderen 3 mitgelieferten Bilder funktionieren wie gewollt. Nochmal: Das Problem ist, dass bei einem Teil der Bilder nicht, wie gewünscht, vollflächig gezeichnet wird. Bernhard |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:54 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz