Aber das ist ja nicht ein großes Bild, sondern 984 einzelne. Da sollte die Anzahl der Frames keine Rolle spielen.
Im Moment kann ich mir das allerdings nicht anschauen, erst zu Hause.
Es wird auf die Größe von 512 Pixeln Transformiert.
Es gibt eine Möglichkeit die Bilder unskaliert umzuwandeln habe das aber im Moment einfach mal deaktiviert (nicht öffentlich gemacht)
weil in meiner Anwendung 512x512 am besten aussieht.
Zitat:
Da sollte die Anzahl der Frames keine Rolle spielen.
Auch wenn es nur ein Bild ist muss ich doch alle Bilder Hintereinander erst mal Temporär aufarbeiten.
Und die stehen im Speicher hintereinander.
Delphi-Quellcode:
for K := 0 to FrameCount - 1 do
begin
GPStatus(GdipImageSelectActiveFrame(img, @pGUID, K));
// Image zeichnen
if (MaxSquareSize = 512) then
begin
GPStatus(GdipDrawImageRectRectI(Graphics, img, xStep + xP, yP, xS, yS, 0, 0, round(W),
round(H), UnitPixel, nil, Abort, nil));
xStep := xStep + AniHeader.Width;
end
else
begin
GPStatus(GdipDrawImageRectI(Graphics, img, xStep, 0, round(W), round(H)));
xStep := xStep + round(W);
end;
lblValue.Caption := 'Value = ' + IntToStr(K + 1);
lblValue.Repaint;
end;
// graphics freigeben
GPStatus(GdipDeleteGraphics(Graphics));
end;
Zurück wird dann 1 Image geliefert das alle Frames enthält.
Result := BitmapToImage(imgHDC);
gruss