![]() |
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:
Orientiert habe ich mich an dem
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; ![]() 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... |
Re: GDI+ Flat API: Matrizen machen mich meschugge...
Liste der Anhänge anzeigen (Anzahl: 1)
:mrgreen:
( nur mal so als Test ) |
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:
Liefert das Ergebnis im Anhang. ;)
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; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:11 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz