Einzelnen Beitrag anzeigen

Benutzerbild von sieppl
sieppl

Registriert seit: 15. Aug 2004
Ort: Münster
198 Beiträge
 
Delphi 7 Professional
 
#1

Problem beim Benutzen eines GDI+ API Aufufes

  Alt 8. Sep 2005, 16:23
Hi!

Ich weiß nicht, ob bei mir ein Übersetzungsfehler von C++ in Delphi unterlaufen ist oder ob ich an anderer Stelle in Problem habe:

Ich möchte aus GDI+ einen Effekt zum Entfernen des 'rote Augen'-Effektes benutzen.
Dazu müssen zunächst eine Instanz des Effektes erstellt werden und danach Parameter gesetzt werden.
WICHTIG: Ich habe bereits zahlreiche andere Effekte zum laufen gebracht, es liegt also ein speziellen Problem mit den 'Rote Augen enfernen'-Parametern vor. Folgende Dinge habe ich übersetzt:

(siehe: GDI+ MSDN

Delphi-Quellcode:
typedef struct {
    UINT numberOfAreas;
    RECT *areas;
}
 RedEyeCorrectionParams;

  TGPRedEyeCorrectionParams = packed record
    NumArray: Cardinal;
    RectArray: Pointer;
  end;
Folgender Test schlägt mit lastResult = InvalidParameter fehl:

Delphi-Quellcode:

procedure TGPEffectRedEyeCorrection.SetRect;
var
  RedEyeCorrectionParams: TGPRedEyeCorrectionParams;
  ArrayRect: array of TRect;
begin
  SetLength(ArrayRect, 2);
  ArrayRect[0] := Rect(0, 0, 50, 50);
  ArrayRect[1] := Rect(100, 100, 100, 100);
  RedEyeCorrectionParams.NumArray := Length(ArrayRect);
  RedEyeCorrectionParams.RectArray := @ArrayRect[0];
  lastResult := GdipSetEffectParameters(nativeEffect, @RedEyeCorrectionParams, SizeOf(RedEyeCorrectionParams));
end;
Wobei 'nativeEffect' die Instanz des Effektes ist (Ich habe die Vorgehensweise aus der bekannten Übersetzung der GDI+ Header übernommen) Die Instanz wird korrekt erstellt.

Vielleicht kann ja jemand helfen, habe schon alles mögliche probiert. Verschiedene Record-Größen (durch Integer-Dummies) etc.

Grüße

Sebastian
Sebastian
  Mit Zitat antworten Zitat