![]() |
AW: RedeemerSVG.TSVGImage - Kleine SVG-Unit für Delphi mit GDI
Delphi-Quellcode:
ruft
inherited CreateBlank
Delphi-Quellcode:
auf. Wenn ich
Create
Delphi-Quellcode:
überschreibe, gibt's also 'ne endlose Rekursion und damit einen Stack Overflow.
Create
|
AW: RedeemerSVG.TSVGImage - Kleine SVG-Unit für Delphi mit GDI
Zitat:
Du musst letztendlich gar nichts hinschreiben und es sollte dann so gehen wie gewünscht:
Delphi-Quellcode:
type TMyPngImage = class(TPngImage) public constructor Create; end; ... { TMyPngImage } constructor TMyPngImage.Create; begin inherited CreateBlank(COLOR_RGBALPHA, 8, 1, 1); end; |
AW: RedeemerSVG.TSVGImage - Kleine SVG-Unit für Delphi mit GDI
Das ist einer der Gründe weshalb Konstruktoren möglichst schlank sein sollten. In diesem Fall reicht es doch CreateBlank nicht als Konstruktor zu implementieren (was ohnehin nicht schön ist), sondern als simple Methode. Der überschriebene Konstruktor ruft dann CreateBlank und nur inherited auf, das war es.
|
AW: RedeemerSVG.TSVGImage - Kleine SVG-Unit für Delphi mit GDI
0.3-alpha ist draußen. Noch ein bisschen schneller (aber unter 10% Gewinn). Link bleibt gleich.
Habe das Create-Problem gelöst, indem ich den benötigten Teil der CreateBlank-Methode kopiert habe. @TiGü: Nichts hinschreiben und reintroduce sind dasselbe, nur bei ersterem meckert der Compiler. @jaenicke: Leider ist das im TPNGImage deklariert. |
AW: RedeemerSVG.TSVGImage - Kleine SVG-Unit für Delphi mit GDI
Liste der Anhänge anzeigen (Anzahl: 1)
So, hier mal ein kleines Update. Oder großes. 0.4-alpha wäre draußen. Kompatibilität hat wieder einen großen Sprung gemacht. Genaues Changelog liegt bei. Link wie zuvor im Anfangspost.
Kleine Info: Das Ding kompiliert wie erwartet ohne Änderungen auch in Vanilla-XE2 und läuft dort etwas schneller (Win32) bzw. merklich langsamer (Win64) als bei 2009. Allerdings ist bereits die Win32-Version des Demo-Programms mehr als doppelt und die Win64-Version mehr als dreimal so groß. Nächster Schritt wäre, erneut ArcTo zu versuchen und das dann selbst zu berechnen. Vermutlich in 1°-Schritten oder so, da ich nicht weiß, wie man einen Kreisausschnitt in Bézier-Kurven darstellen kann. Falls das jemand weiß, gerne her damit. In GDI gibt es eine Funktion dafür (heißt ebenfalls ArcTo), aber der fehlt leider die Möglichkeit, die x-Achse der Ellipse zu kippen, was SVG kann. Vielleicht spiele ich nachher mal mit Geogebra herum. Ein weiteres Feature für die nächste Version sind Rasterbilder. Spaß machen hier zwei Dinge: Alphakanal (da dann doch mal) und Transformationen. Vermutlich werde ich ein Rechteck von der Größe des Bildes erstellen und darauf die Transformationen anwenden. Ich bilde dann jeweils die Minima und die Maxima der transformierten Eckkoordinaten. Dann iteriere ich vom Minimum zum Maximum und nutze eine Umkehrfunktion. Wenn ich das richtig sehe, ist eine affine Abbildung, deren Bildraum weder eine Gerade noch ein Punkt ist (in diesen Fällen bräuchte ich das Bild nicht zeichnen), eine bijektive Abbildung, also kann ich die Umkehrfunktion bilden. Bildet die Umkehrfunktion die derzeit iterierte Koordinate auf das Bild ab, kopiere ich den Pixel vom Punkt im Bild. Müsste so klappen. Langsam merke ich, dass so'n Mathe-Studium doch was bringt. (Zum angehängten Vergleich: Der Unterschied zwischen 0.2 und 0.3 ist im Innenwinkel des V zu finden. Ich weiß spontan nicht, warum.) |
AW: RedeemerSVG.TSVGImage - Kleine SVG-Unit für Delphi mit GDI
Liste der Anhänge anzeigen (Anzahl: 1)
Habe Sonntag und Montag den path-Befehl ArcTo implementiert und ein paar Fehler behoben. Ich möchte bis auf weiteres auf image verzichten. Damit ist v0.5-beta die (vorerst) finale Version.
Ich möchte wissen, wer die Klasse in Produkten verwendet, die nicht für den Eigenbedarf sind, daher bleibt eine Nachricht an mich Lizenzbedingung. Die Nutzung ist aber kostenlos. Zitat:
|
AW: RedeemerSVG.TSVGImage - Kleine SVG-Unit für Delphi mit GDI
wenn ich deinen Source "real" verwende, bekommst du ne Message:)
(aktuell ist deine GDI only Stategie für mich ne coole simple Basis, um weitere "XY portatble" Sachen daraus abzuleiten und zu testen) |
AW: RedeemerSVG.TSVGImage - Kleine SVG-Unit für Delphi mit GDI
Zitat:
|
AW: RedeemerSVG.TSVGImage - Kleine SVG-Unit für Delphi mit GDI
Da es für EmbeddedSysteme(also XY Hardware mit XY Microcontroler mit RealTimeOS oder Hardcore ganz ohne OS) keine aus meiner Sicht portablen(im Sinn von WinGDI kompatibel) und bezahlbaren GrafikLibs gab, hatte ich mir auf Basis der Analyse von Sourcen alter SoftwareOnly WIN-VGA-Treiber und FullSoftware RDP-Sourcen etwas eigenes "80..90% GDI kompatibles" geschrieben, was letztendlich direkt PixelByPixel im QuadBufferd/Switched-HW-Bildschirmspeicher(den es also 4x gibt) arbeitet.
Zu gut deutsch, ich kann in Grenzen den Visualisierungsteil unter Windows auf GDI-Basis entwickeln und nutze dann den "GrafikSourcecode" in meinen EmbeddedSystemen. Vor vielen Jahren war das mit eigener Hardware durchaus noch sinvoll, dann RaspberryPI, nun innendrin billigster AndroidMassenSchrott der ein integriertes Display hat... Je besser die HW-Basis und das (OS)API(z.B. auch FMX), um so leichter ist der GDI-API-Adapter "rückwärts" jeweils zu realisieren... zum Schluss ist für mich das funktional/logisch dann alles gleich, weil ich überall (m)einen GDI kompatiblen Grafikcode zur Visualisierung einsetzen kann... und da wird es durchaus cool, statt PixelPildern über die meist weiter sehr langsamen Embedded Kommunikationswege dann lieber SVGs zu übertragen, um daraus dann doch "wieder schöne Darstellungen" live zu erzeugen... mir geht es da also hauptsächlich um die Cachespeicher- & Bandbreitenoptimierung, mit Delphi hat das garnix mehr zu tun ;) (aktuell verfolgen die Leute von "FMXlinux" bei ihrem "CrossVCL" Projekt den exakt gleichen Grundgedanken, nur gehen die mit GDI+ und OpenGL noch viel weiter... die entwickeln ja auch sagen wir für eine Hardwarebasis mit "DesktopCPU&RAM-Power":) ) |
AW: RedeemerSVG.TSVGImage - Kleine SVG-Unit für Delphi mit GDI
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:27 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