Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi [GDI+]Bild wird nicht richtig geladen (https://www.delphipraxis.net/157167-%5Bgdi-%5Dbild-wird-nicht-richtig-geladen.html)

rollstuhlfahrer 1. Jan 2011 13:40

[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:
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 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).
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

Bummi 1. Jan 2011 15:21

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....

rollstuhlfahrer 1. Jan 2011 18:34

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 07:33 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