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