AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Idee: Vektor-Screenshot-Tool (SVG) für Delphi/VCL - Interessenten?
Thema durchsuchen
Ansicht
Themen-Optionen

Idee: Vektor-Screenshot-Tool (SVG) für Delphi/VCL - Interessenten?

Ein Thema von Redeemer · begonnen am 19. Mai 2022 · letzter Beitrag vom 22. Mai 2022
Antwort Antwort
Medium

Registriert seit: 23. Jan 2008
3.689 Beiträge
 
Delphi 2007 Enterprise
 
#1

AW: Idee: Vektor-Screenshot-Tool (SVG) für Delphi/VCL - Interessenten?

  Alt 20. Mai 2022, 15:36
Vorab als Kontext: Meine Bachelorarbeit war ein Rasterbild-Kompressionsverfahren, dass auf Kantendetektion mit Wiederherstellung aus den Kanten basiert hat. Die gesamte Entwicklung hat etwas über 2 Jahre gedauert, und die Endergebnisse waren zum einen so aufwendig, dass ich via Shader (heutzutage wohl eher CUDA bzw. andere GPU APIs) eine Grafikkarte ein paar Sekunden für ein FullHD-Bild damit beschäftigen konnte, und zum anderen dennoch zu sehr "comic like", dass ein Differenz-Bitmap nötig war. Je nach Bildinhalt war das deutlich besser oder schlechter als JPEG (das Differenzbild war sogar im Grunde ein JPEG), am Ende aber insgesamt VIEL zu viel Rechenaufwand für den Zweck. Hat mir dennoch einen sehr guten Abschluss beschert, war aber doch mehr nur theoretisches Beinevertreten. (Meine Prüfer waren der Meinung, dass der Gesamtumfang eher einer Master-Arbeit angemessen gewesen wäre, eher darüber hinaus. War aber eher ein Spaß-Projekt, dass ich dann zum Abschlussthema umgewandelt hatte.)

Vektorisieren von Rastergrafiken ist auch heute noch kein einfaches Unterfangen, vor allem wenn man so Details wie Farbverläufe und Strichbreiten berücksichtigen muss. Soll heißen: Wenn du keinen Zugriff auf bereits in einem Vektorformat vorliegende Daten hast - und zwar komplett - dann ist eine qualitativ nutzbare Ausführung eine Sache von Mannjahren. Da große Teile der von der VCL genutzen Grafiken der WinAPI nicht in solch einem Format vorliegen, halte ich das Vorhaben für unrealistisch, mindestens aber die möglichen Ergebnisse für begrenzt Einsetzbar.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
jziersch

Registriert seit: 9. Okt 2003
Ort: München
261 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Idee: Vektor-Screenshot-Tool (SVG) für Delphi/VCL - Interessenten?

  Alt 20. Mai 2022, 16:21
Vektorisieren von Rastergrafiken ist auch heute noch kein einfaches Unterfangen
Vekorisieren ist hier nicht erforderlich. Es sollen lediglich die auf einem Form enthaltenen Komponenten rekursiv durchlaufen werden und dann von innen nach außen als Vektoren abgespeichert werden.

Mein Vorschlag geht einen andern Weg indem er die vorhandene Paint routine nutzt. Linien werden hier tatsächlich als Striche ausgegeben, Texte sowieso als Text.
WPCubed GmbH
Komponenten für Delphi:
WPTools, wPDF, WPViewPDF
  Mit Zitat antworten Zitat
Redeemer

Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
1.140 Beiträge
 
Delphi 2009 Professional
 
#3

AW: Idee: Vektor-Screenshot-Tool (SVG) für Delphi/VCL - Interessenten?

  Alt 22. Mai 2022, 18:45
Ich beleuchte das mal aus Anewendersicht.
Die Idee ist überhaupt nicht für Anwender gedacht.

Wenn ich das richtig verstanden habe, geht es Janni gar nicht um die Anzeige am Bildschirm, sondern eher um sowas wie Druckerzeugnisse
Ich dachte vor allem an Videos, wo man vielleicht an einen Teil des Programms heranzoomen möchte, ohne dass es Pixelmatsch wird.

Aus meiner Sicht würde ich das so umsetzen, quasi in zwei Phasen:
1. Ein "Form-Baum" Ersteller, der die aktuelle Form, Komponenten, Zustände etc. in XML o.ä. speichert in eine Art Seitenbeschreibungssprache
2. Ein "Renderer", der dann diesen Baum entsprechend in SVG rendert

Der 2.) Schritt wäre dann nur einmal pro Komponente ( vielleicht mit etwas Handarbeit ) nötig, aber wie ein Button zu SVG gerendert wird
sollte ich in der Regel nur einmal zu implementieren sein, wenn ansonsten Größe, Positionen, Fonts, Wrap, etc. bekannt sind.
Gefühlt würde ich annehmen dass das nur bei den Standard-Controls relativ leicht machbar wäre.

Das hätte den Vorteil dass man den 2.) Rendererteil mal auswechseln oder leicht erweitern könnte ( z.B. WinXP-Style, Aero-Style, DevExpress, ... ).
Der Vorteil wäre auch dass im 1. Teil dann ein sehr optimiertes XML zur verfügung stände, was wie eine komprimierte "Seitenbeschreibungssprache" funktionieren würde.
Ich würde aber erstmal schauen ob es nicht vielleicht schon passende Seitenbeschreibungssprachen gibt, mit fällt auf Anhieb jetzt nichts dazu ein.

Das müsste meiner Meinung nach funktionieren weil man alles Visuelle am Ende in irgendwelche Primitive auflösen kann ( Polygon, Positionen, Linienstärke, Gradient, Font, Höhe, Breite, ... ).
Aber 1:1 pixelgenau wird das wohl nicht, würde ich aber auch nicht unbedingt benötigen.
Interessanter Ansatz. Bin mir aber nicht sicher, ob das die Sache mit dem Ziel, das erstmal nur für Win10 zu machen, nicht unnötig kompliziert macht, denn mein ursprünglicher Ansatz war der hier:
Es sollen lediglich die auf einem Form enthaltenen Komponenten rekursiv durchlaufen werden und dann von innen nach außen als Vektoren abgespeichert werden.
Janni
2005 PE, 2009 PA, XE2 PA
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:56 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