Einzelnen Beitrag anzeigen

Benutzerbild von Mithrandir
Mithrandir
(CodeLib-Manager)

Registriert seit: 27. Nov 2008
Ort: Delmenhorst
2.379 Beiträge
 
#1

GDI+ Flat API: Matrizen machen mich meschugge...

  Alt 21. Okt 2009, 07:50
Hi ihr,

ich habe folgendes vor:

Ich möchte eine Textausgabe um eine X-Achse direkt unterhalb des Textes spiegeln. Ich nutze zum Zeichnen auf dem Canvas die GDI+ Flat API, da es sich um ein nonVCL-Projekt handelt. Allerdings blicke ich das ganze Transformieren mit den Matrizen noch nicht so.

Hier mein Code:

Delphi-Quellcode:
if FSongPosTime <> 'then
  begin
    GdipCreateSolidFill(FSongTimeColor, gpFontBrush);
    rectF := MakeRectF(255, 56, 85, 24);
    gpGetStatus(GdipDrawString(gpGraphics, StringToOleStr(FSongPosTime), length(FSongPosTime), gpTimeFont, @rectF, gpStrFormat, gpFontBrush));
    GdipCreateMatrix(fMatrix);
    GdipSetMatrixElements(fMatrix, -1, 1, 0, 1, DisplayWidth div 2, DisplayHeight div 2);
    GdipSetWorldTransform(gpGraphics, fMatrix);
    gpGetStatus(GdipDrawString(gpGraphics, StringToOleStr(FSongPosTime), length(FSongPosTime), gpTimeFont, @rectF, gpStrFormat, gpFontBrush));
    GdipResetWorldTransform(gpGraphics);
    GdipDeleteMatrix(fMatrix); *)
  end;
Orientiert habe ich mich an dem Beispiel der GDIPlus - Komponenten, die es für Delphi gibt. Allerdings brauche ich ja nur die Funktion, deswegen möchte ich eigentlich auf dieses "Monster" verzichten.

Oben geschriebener Code macht aber - nichts. Oder das Bild wird gespiegelt und landet im Nirvana, auf dem Bild ist es jedenfalls nicht zu sehen. Damit ihr auch seht, worum es geht, habe ich mal zwei Bilder in den Anhang gepackt. Der rechte Teil mit der Zeitanzeige ist der interessante, die Bilder habe ich mit Paint.NET bearbeitet.

Vielleicht gibt es hier ja jemanden, der schon Erfahrung mit Matrizen und der API hat...
Miniaturansicht angehängter Grafiken
st_original_924.png   st_original_mod_127.png  
米斯蘭迪爾
"In einer Zeit universellen Betruges wird das Aussprechen der Wahrheit zu einem revolutionären Akt." -- 1984, George Orwell
  Mit Zitat antworten Zitat