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
Seite 2 von 3     12 3      
jziersch

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

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

  Alt 20. Mai 2022, 15:11
Hallo,

das ist eine coole idee. Mit ein paar Zeilen code kann man schon einiges erreichen:

Code:
procedure TForm6.Button3Click(Sender: TObject);
var meta : TMetafile;
    can : TMetafileCanvas;
begin
   meta := TMetafile.Create;
   can := TMetafileCanvas.Create(meta, 0);
   try
     Self.PaintTo(can.Handle, 0,0);
   finally
     can.Free;
   end;
   meta.SaveToFile('s:\out.emf');
   meta.Free;
end;
Alle Panels werden bei mir als bitmaps ausgegeben, nicht als gefüllte Rechtecke. Evtl kann man dies abfangen oder die gleichfarbigen Bilder später erkennen und in entsprechende FillRects wandeln.

EMF ist natürlich nicht so schön wie SVG, aber skaliert auch.
WPCubed GmbH
Komponenten für Delphi:
WPTools, wPDF, WPViewPDF
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#12

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

  Alt 20. Mai 2022, 15:38
Gab es von Winsoft nicht mal eine SVG-Canvas?
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#13

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

  Alt 20. Mai 2022, 16: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
251 Beiträge
 
Delphi 10.4 Sydney
 
#14

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

  Alt 20. Mai 2022, 17: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.051 Beiträge
 
Delphi 2009 Professional
 
#15

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

  Alt 20. Mai 2022, 19:30
Hallo,

das ist eine coole idee. Mit ein paar Zeilen code kann man schon einiges erreichen:

Code:
procedure TForm6.Button3Click(Sender: TObject);
var meta : TMetafile;
    can : TMetafileCanvas;
begin
   meta := TMetafile.Create;
   can := TMetafileCanvas.Create(meta, 0);
   try
     Self.PaintTo(can.Handle, 0,0);
   finally
     can.Free;
   end;
   meta.SaveToFile('s:\out.emf');
   meta.Free;
end;
Alle Panels werden bei mir als bitmaps ausgegeben, nicht als gefüllte Rechtecke. Evtl kann man dies abfangen oder die gleichfarbigen Bilder später erkennen und in entsprechende FillRects wandeln.

EMF ist natürlich nicht so schön wie SVG, aber skaliert auch.
Hab das gerade mal ausprobiert. Die Unterstützung für die erstellte EMF in unterschiedlichen Vektoreditoren ist unterschiedlich, aber überall schlecht:
  • Affinity: Komplett unbrauchbar. Besonders auffällig: Fast alle Objekte (insbesondere alle Texte) werden in der oberen linken Ecke platziert, außer der Hintergrund von TButton, TRadioButton, TCheckBox, TListBox, TTreeView, TProgressBar und TTrackbar
  • Inkscape: schlecht, kaum brauchbar. Besonders auffällig: Der Text von TMemo wird durch irgendwelchen Blödsinn ersetzt.
  • Word (nach "Bild bearbeiten"): schlecht, marginal schlechter als Inkscape. Besonders auffällig: Word ist als einziges der drei Programme nicht Unicode-fähig.
Durch Vergleich untereinander und mit einer Ausgabe über den Microsoft PDF Printer via TPrinter komme ich zu folgender Vermutung:
TLabel 100% Vektor
TEditRahmen Vektor, Text Raster
TMemo100% Vektor
TButtonRahmen Raster, Text Vektor
TGroupBoxRahmen Raster, Text Vektor, Text Vektor
TRadioButtonSymbol Raster, Text Vektor
TCheckBoxSymbol Raster, Text Vektor
TStatusBarRahmen und Symbol Raster, Text Vektor
TListBox100% Vektor
TComboBox - ComboBoxRahmen und Symbol Raster, Text fehlt
TComboBox - SimpleRahmen des Eingabefelds im Fokus-Status und Raster, Text fehlt, Listbox fehlt komplett
TComboBox - ComboBoxListRahmen und Symbol Raster, Text Vektor
TTreeViewRahmen und Symbole Raster, Text Vektor
TProgressBar100% Raster
TScrollBar100% Raster
TTrackBar100% Raster
TTabControlRahmen Raster, Text Vektor
Ist nicht so toll.
Janni
2005 PE, 2009 PA, XE2 PA

Geändert von Redeemer (20. Mai 2022 um 20:16 Uhr)
  Mit Zitat antworten Zitat
jziersch

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

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

  Alt 20. Mai 2022, 19:41
Viele Software macht bei EMF schlapp, allerdings konnte ich mit meinem PDF Konverter wPDF das Ergebnis nach PDF wandeln un dieses wiederum mit PhotoLine nach SVG. Das Ergebnis hängt hier an.

Ich teile Deine Erfahrung. Insbesondere die Edits sind dann Raster.
Angehängte Dateien
Dateityp: zip new.svg.zip (5,1 KB, 4x aufgerufen)
WPCubed GmbH
Komponenten für Delphi:
WPTools, wPDF, WPViewPDF

Geändert von jziersch (20. Mai 2022 um 19:44 Uhr)
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.942 Beiträge
 
Delphi 12 Athens
 
#17

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

  Alt 20. Mai 2022, 19:54
Wie sieht es mit WMF aus?
Evtl. können manche Programme besser.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#18

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

  Alt 20. Mai 2022, 20:47
SVG kann doch aber auch Rastergrafiken enthalten, oder nicht?

Also wäre es möglich Teile via Vectorbestandteilen und Anderes pixelig zu haben.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
delphifan2004

Registriert seit: 26. Nov 2004
Ort: Dresden
272 Beiträge
 
Delphi 10.3 Rio
 
#19

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

  Alt 21. Mai 2022, 18:57
Ich beleuchte das mal aus Anewendersicht.

Wo brauche ich denn Vektorgrafik? Als Anwender will ich mein Monitorbild schell und unkompliziert ohne knstliche Verzögerung angzeigt bekommen, da nervt mich schon jede Flash Amimation auf der Wecseite, oh Mann eh da das Bild aufgebaut ist!

Als Computerspieler, der ich aber nicht bin, würde ich vielleicht Geld für die teure High End Grafikkarte ausgeben. Aber ich bin kein Computerspieler ich will nur mein Monitorbild anständig angezeigt haben.

Ich habe mir das Open Source Programm Blender angeschaut. Super, was ich damit an Anomtionen erstellen kann. Aber warum kann ich dort ein gerendertes Bild auf meinem Rechner nicht anzeigen, obwohl einfache Spiele auch in 3D funktionieren? Ganz einfach, Blender rechnet hochausflösend und somit mathematisch exakt. Meine Grafik ist eine simple OnBoard Grafik, die zum Anzeigen von Windows völlig ausreicht, auch performant anzeigt, aber bei aufwendigen Grafikanimationen völlig berfordert ist. In Computerspielen werden Näherungsrechnungen verwendet, deshalb kann dann sogar meine OnBoard Grafik diese Animationen anzeigen. Und High End Spiele, die wirklich so eine teure Grafikkarte erfordern, spiele ich nicht, da ich nicht so ein Spielefan bin.

Langer Rede kurzer Sinn, ich will eine schnelle Bildschirmausgabe für meine Anwendungen, da sehe ich in Vektorgrafik nach all dem vorher gesagten hier, keinen Nutzen für mich. Der Rechenaufwand ist höher, die Performance dürfte massiv leiden und ich bin einer von denen die nicht gewillt sind, sich die neuste Hardware anzuschaffen, nur damit das brandneue Programm läuft. Im Zweifelsfall nehme ich dann eben eine Uralt Version davon. Die mag nicht alles können, was dieneuste Version vielleicht kann, aber was ich für den Alltag brauche, kann mit Sicherheit auch die Uralt Version. Und die läuft dann auch auf meinem alten Rechner.

Auch irgendeine Grafikanimation mit Blender wäre mir lieber mit einfacherern Algos erstellt, die auch mir mit der Onboard Grafik die Chance geben, das Ergbnis meiner gerenderten Grafik zu sehen, Grafiken die mit Blender erstellt wurden, kann ich ja wenn ich sie von fremden als .jpg Dateien bekomme, auch wieder und sogar mit dieser meiner OnBoard Grafikkarte anzeigen. Da wünschte ich mir für Blender eine Einsterllung der Rechengenauigkeit, die ich so lange verringern kann bis ich mit meiner Hardware die gernderte Animation sehen kann wie das andere bei ihren youtube Demos von Blender auch können.

Also lehen ich schon aml auf meinem Recner alles ab, was mich zu teuren Neuanschaffungen zwingt, nur damit ich die tolle Grafik bei mir auch anzeigen kann. Rastergrafik ist da günstiger, die sehe ich schneller.

Ist nicht böse gemeint, aber ein Programmierer sollte schon wissen wie die Anwender ihrer Software ticken. Deshalb dieser Beitrag.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#20

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

  Alt 22. Mai 2022, 10:46
Also lehen ich schon aml auf meinem Recner alles ab, was mich zu teuren Neuanschaffungen zwingt, nur damit ich die tolle Grafik bei mir auch anzeigen kann. Rastergrafik ist da günstiger, die sehe ich schneller.
Wenn ich das richtig verstanden habe, geht es Janni gar nicht um die Anzeige am Bildschirm, sondern eher um sowas wie Druckerzeugnisse:

Ich überlege, eine Unit zu stellen, mit der man von einem Delphi-VCL-Programm einen Vektor-Screenshot im SVG-Format erstellen kann, um qualitativ hochwertige und einfach lokalisierbare Dokumentation zu erstellen.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 17:15 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