AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Wie speichert TCanvas Grafikdaten intern?

Ein Thema von HappyJoe · begonnen am 17. Sep 2010 · letzter Beitrag vom 17. Sep 2010
Antwort Antwort
HappyJoe

Registriert seit: 14. Nov 2006
37 Beiträge
 
Delphi XE2 Professional
 
#1

Wie speichert TCanvas Grafikdaten intern?

  Alt 17. Sep 2010, 10:24
Hallo zusammen,

weiss jemand, ob TCanvas die Grafikdaten intern irgendwo abspeichert? Oder anders: Kann ich aus einem Canvas ermitteln, dass es aus beispielsweise einer Linie (von/nach) und einem Text (ABC) besteht?
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#2

AW: Wie speichert TCanvas Grafikdaten intern?

  Alt 17. Sep 2010, 10:45
Nicht ohne Mustererkennung. Zumindest meine ich, dass TCanvas nicht speichert was damit passiert ist, sondern nur das Bild lädt/verwaltet.

MfG
Fabian
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#3

AW: Wie speichert TCanvas Grafikdaten intern?

  Alt 17. Sep 2010, 11:16
Hinter TCanvas steckt ein GDI Handle von Windows.
Das Handle verweist wiederum auf ein Bitmap, Fenster, Metafile, ...

Mit der Klasse TMetafile kann man die Zeichenbefehle, die über den Canvas reinkommen
aufzeichen, abspeichern und später wieder abspielen (=erneut anzeigen).
Würde man die Datei *.EMF analysieren, dann könnte man jeden Befehl (MoveTo, LineTo,...)
samt Parameter erkennen.
(ist aber kompliziert; Doku hat über 300 Seiten)
Andreas
  Mit Zitat antworten Zitat
HappyJoe

Registriert seit: 14. Nov 2006
37 Beiträge
 
Delphi XE2 Professional
 
#4

AW: Wie speichert TCanvas Grafikdaten intern?

  Alt 17. Sep 2010, 17:21
Danke Andreas,

es ist zwar kompliziert, aber vielleicht werde ich es doch mal versuchen.

Ziel ist es, ein pfd-file zu erstellen. Die Syntax für PDFs habe ich, aber dann muss man jeden Ausdruck doppelt (für Printer.Canvas und PDF) programmieren. Wenn ich jedoch das Canvas/Metafile als Grundlage nehme und daraus die pdf-Befehle ableite, wären Ausdrucke total easy.
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#5

AW: Wie speichert TCanvas Grafikdaten intern?

  Alt 17. Sep 2010, 17:27
Du kannst dir doch selbst ein TPDFCanvas von TCanvas ableiten, das die Zeichenbefehle in entsprechende PDF-Befehle umsetzt. Dann musst du in der eigentlichen Zeichenroutine nur noch dieses Canvas statt dem normalen Canvas übergeben und die Ausgabe erfolgt als PDF.
  Mit Zitat antworten Zitat
Benutzerbild von Ralf Kaiser
Ralf Kaiser

Registriert seit: 21. Mär 2005
Ort: Wuppertal
932 Beiträge
 
Delphi 10.3 Rio
 
#6

AW: Wie speichert TCanvas Grafikdaten intern?

  Alt 17. Sep 2010, 17:30
Du kannst dir doch selbst ein TPDFCanvas von TCanvas ableiten, das die Zeichenbefehle in entsprechende PDF-Befehle umsetzt. Dann musst du in der eigentlichen Zeichenroutine nur noch dieses Canvas statt dem normalen Canvas übergeben und die Ausgabe erfolgt als PDF.
Genau so arbeitet die "Synopse PDF Engine" (und das, im übrigen, sehr gut). Das Teil ist Open Source. Einfach mal reinschauen!
Ralf Kaiser
  Mit Zitat antworten Zitat
HappyJoe

Registriert seit: 14. Nov 2006
37 Beiträge
 
Delphi XE2 Professional
 
#7

AW: Wie speichert TCanvas Grafikdaten intern?

  Alt 17. Sep 2010, 18:26
Ach jaaaa, warum denn einfach wenn's auch kompliziert geht?
  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 23:18 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