Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi GDI+ Flat API: Matrizen machen mich meschugge... (https://www.delphipraxis.net/142049-gdi-flat-api-matrizen-machen-mich-meschugge.html)

Mithrandir 21. Okt 2009 07:50


GDI+ Flat API: Matrizen machen mich meschugge...
 
Liste der Anhänge anzeigen (Anzahl: 2)
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. :wall:

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

turboPASCAL 21. Okt 2009 09:04

Re: GDI+ Flat API: Matrizen machen mich meschugge...
 
Liste der Anhänge anzeigen (Anzahl: 1)
:mrgreen:


( nur mal so als Test )

Mithrandir 21. Okt 2009 10:21

Re: GDI+ Flat API: Matrizen machen mich meschugge...
 
Liste der Anhänge anzeigen (Anzahl: 1)
Wat würde ich nur ohne dich machen.. :kiss:

Delphi-Quellcode:
  if FSongPosTime <> '' then
  begin
    GdipCreateSolidFill(FSongTimeColor, gpFontBrush);
    rectF := MakeRectF(195, 82, 0, 0);
    gpGetStatus(GdipDrawString(gpGraphics, StringToOleStr(FSongPosTime), length(FSongPosTime), gpTimeFont, @rectF, gpStrFormat, gpFontBrush));
    rectF := MakeRectF(194, -71, 0, 0);
    GdipCreateMatrix(fMatrix);
    gpGetStatus(GdipSetMatrixElements(fMatrix, 1, 0, 0, -1, 1, 1));
    gpGetStatus(GdipSetWorldTransform(gpGraphics, fMatrix));
    gpr := MakeRect(194, -74, 85, 29);
    GdipCreateLineBrushFromRectI(@gpr, $02999999, $A0999999, LinearGradientModeVertical, WrapModeTile, gpMirrorBrush);
    gpGetStatus(GdipDrawString(gpGraphics, StringToOleStr(FSongPosTime), length(FSongPosTime), gpTimeFont, @rectF, gpStrFormat, gpMirrorBrush));
    gpGetStatus(GdipResetWorldTransform(gpGraphics));
    gpGetStatus(GdipDeleteMatrix(fMatrix));
  end;
Liefert das Ergebnis im Anhang. ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:29 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